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;

	  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.

	  The behavior of a program that adds  specializations	for  is_arith-
       metic
	  or is_arithmetic_v
	  (since C++17)	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 <iostream>
	#include <type_traits>

	class A	{};

	int main()
	{
	    std::cout << std::boolalpha
		<< "A:		  "  <<	 std::is_arithmetic_v<A>	    <<
       '\n' // false
		<<  "bool:	   "  <<  std::is_arithmetic_v<bool>	    <<
       '\n' // true
		<< "int:	  "  <<	 std::is_arithmetic_v<int>	    <<
       '\n' // true
		<<  "int  const:    "  << std::is_arithmetic_v<int const>   <<
       '\n' // true
		<< "int	&:	  "  <<	 std::is_arithmetic_v<int&>	    <<
       '\n' // false
		<<  "int  *:	    "  << std::is_arithmetic_v<int*>	    <<
       '\n' // false
		<< "float:	  "  <<	 std::is_arithmetic_v<float>	    <<
       '\n' // true
		<<  "float  const:  "  << std::is_arithmetic_v<float const> <<
       '\n' // true
		<< "float &:	  "  <<	 std::is_arithmetic_v<float&>	    <<
       '\n' // false
		<<  "float  *:	    "  << std::is_arithmetic_v<float*>	    <<
       '\n' // false
		<< "char:	  "  <<	 std::is_arithmetic_v<char>	    <<
       '\n' // true
		<<  "char  const:   "  << std::is_arithmetic_v<char const>  <<
       '\n' // true
		<< "char &:	  "  <<	 std::is_arithmetic_v<char&>	    <<
       '\n' // false
		<<  "char  *:	    "  << std::is_arithmetic_v<char*>	    <<
       '\n' // false
		;
	}

Output:
	A:	     false
	bool:	     true
	int:	     true
	int const:   true
	int &:	     false
	int *:	     false
	float:	     true
	float const: true
	float &:     false
	float *:     false
	char:	     true
	char const:  true
	char &:	     false
	char *:	     false

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		  2022.07.31		 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.0>

home | help