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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::is_fundamental - std::is_fundamental

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

	  If  T	 is  a	fundamental  type  (that is, arithmetic	type, void, or
       nullptr_t), provides
	  the member constant value equal true.	For any	other type,  value  is
       false.

	  The behavior of a program that adds specializations for is_fundamen-
       tal
	  or is_fundamental_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_fundamental_v = is_fundamental<T>::value;

       Inherited from std::integral_constant

Member constants
	  value	   true	if T is	a fundamental 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>

Possible implementation
	  template< class T >
	  struct is_fundamental
	    : std::integral_constant<
		  bool,
		  std::is_arithmetic<T>::value ||
		  std::is_void<T>::value  ||
		  std::is_same<std::nullptr_t,	      typename	      std::re-
       move_cv<T>::type>::value
		  // you can also use 'std::is_null_pointer<T>::value' instead
       in C++14
	  > {};

Example
       // Run this code

	#include <iostream>
	#include <type_traits>

	class A	{};

	int main()
	{
	    std::cout << std::boolalpha;
	    std::cout << "A\t"	    << std::is_fundamental<A>::value <<	'\n';
	    std::cout  <<  "int\t"     <<  std::is_fundamental<int>::value  <<
       '\n';
	    std::cout <<  "int&\t"    <<  std::is_fundamental<int&>::value  <<
       '\n';
	    std::cout  <<  "int*\t"    <<  std::is_fundamental<int*>::value <<
       '\n';
	    std::cout << "float\t"   <<	 std::is_fundamental<float>::value  <<
       '\n';
	    std::cout  <<  "float&\t" << std::is_fundamental<float&>::value <<
       '\n';
	    std::cout << "float*\t" <<	std::is_fundamental<float*>::value  <<
       '\n';
	}

Output:
	A	false
	int	true
	int&	    false
	int*	false
	float	true
	float&	    false
	float*	false

See also
	  is_compound	  checks if a type is a	compound type
	  (C++11)	  (class template)
	  is_arithmetic	  checks if a type is an arithmetic type
	  (C++11)	  (class template)
	  is_void	  checks if a type is void
	  (C++11)	  (class template)
	  is_null_pointer checks if a type is std::nullptr_t
	  (C++14)	  (class template)

http://cppreference.com		  2022.07.31		std::is_fundamental(3)

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

home | help