Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::is_arithmetic(3)	      C++ Standard Libary	 std::is_arithmetic(3)

NAME
       std::is_arithmetic - std::is_arithmetic

Synopsis
	  Defined in header <type_traits>
	  template< class T >		   (since C++11)
	  struct is_arithmetic;

	  std::is_arithmetic is	a UnaryTypeTrait.

	  If T is an arithmetic	type (that is, an integral type	or a floating-
       point type) or a
	  cv-qualified	version	 thereof,  provides  the member	constant value
       equal to	true. For
	  any other type, value	is false.

	  If the program adds specializations for std::is_arithmetic
	  or std::is_arithmetic_v
	  (since C++17), the behavior is undefined.

Template parameters
	  T - a	type to	check

	  Helper variable template

	  template<		    class		  T		     >
       (since C++17)
	  inline constexpr bool	is_arithmetic_v	= is_arithmetic<T>::value;

       Inherited from std::integral_constant

Member constants
	  value	   true	if T is	an arithmetic type, false otherwise
	  [static] (public static member constant)

Member functions
	  operator bool	converts the object to bool, returns value
			(public	member function)
	  operator()	returns	value
	  (C++14)	(public	member function)

Member types
	  Type	     Definition
	  value_type bool
	  type	     std::integral_constant<bool, value>

Notes
	  Arithmetic types are the built-in types for which the	arithmetic op-
       erators (+, -, *,
	  /)  are  defined  (possibly in combination with the usual arithmetic
       conversions).

	  Specializations of std::numeric_limits are provided for  all	arith-
       metic types.

Possible implementation
	  template<class T>
	  struct is_arithmetic : std::integral_constant<bool,
							std::is_inte-
       gral<T>::value ||
							std::is_float-
       ing_point<T>::value> {};

Example
       // Run this code

	#include <atomic>
	#include <cstddef>
	#include <type_traits>

	class A	{};

	enum class B : int { e };

	static_assert(
	    std::is_arithmetic_v<bool>		  == true  and
	    std::is_arithmetic_v<char>		  == true  and
	    std::is_arithmetic_v<char const>	  == true  and
	    std::is_arithmetic_v<int>		  == true  and
	    std::is_arithmetic_v<int const>	  == true  and
	    std::is_arithmetic_v<float>		  == true  and
	    std::is_arithmetic_v<float const>	  == true  and
	    std::is_arithmetic_v<std::size_t>	  == true  and

	    std::is_arithmetic_v<char&>		  == false and
	    std::is_arithmetic_v<char*>		  == false and
	    std::is_arithmetic_v<int&>		  == false and
	    std::is_arithmetic_v<int*>		  == false and
	    std::is_arithmetic_v<float&>	  == false and
	    std::is_arithmetic_v<float*>	  == false and
	    std::is_arithmetic_v<A>		  == false and
	    std::is_arithmetic_v<B>		  == false and
	    std::is_arithmetic_v<decltype(B::e)>  == false and
	    std::is_arithmetic_v<std::byte>	  == false and
	    std::is_arithmetic_v<std::atomic_int> == false
	);

	int main() {}

See also
	  is_integral	    checks if a	type is	an integral type
	  (C++11)	    (class template)
	  is_floating_point checks if a	type is	a floating-point type
	  (C++11)	    (class template)

http://cppreference.com		  2024.06.10		 std::is_arithmetic(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::is_arithmetic&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help