std::is_null_pointer (3) - Linux Manuals

std::is_null_pointer: std::is_null_pointer


std::is_null_pointer - std::is_null_pointer


Defined in header <type_traits>
template< class T > (since C++14)
struct is_null_pointer;

Checks whether T is the type std::nullptr_t.
Provides the member constant value that is equal to true, if T is the type std::nullptr_t, const std::nullptr_t, volatile std::nullptr_t, or const volatile std::nullptr_t.
Otherwise, value is equal to false.

Template parameters

T - a type to check

Helper variable template

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

Inherited from std::integral_constant

Member constants

value true if T is the type std::nullptr_t (possibly cv-qualified) , false otherwise
         (public static member constant)

Member functions

              converts the object to bool, returns value
operator bool (public member function)

operator() returns value
              (public member function)

Member types

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

Possible implementation

  template< class T >
  struct is_null_pointer : std::is_same<std::nullptr_t, std::remove_cv_t<T>> {};


std::is_pointer is false for std::nullptr_t because it is not a built-in pointer type.


// Run this code

  #include <iostream>
  #include <type_traits>

  int main()
      std::cout << std::boolalpha
                << std::is_null_pointer< decltype(nullptr) >::value << ' '
                << std::is_null_pointer< int* >::value << '\n'
                << std::is_pointer< decltype(nullptr) >::value << ' '
                << std::is_pointer<int*>::value << '\n';


  true false
  false true

See also

is_void checks if a type is void
            (class template)

is_array checks if a type is an array type
            (class template)

is_pointer checks if a type is a pointer type
            (class template)

is_enum checks if a type is an enumeration type
            (class template)

is_union checks if a type is an union type
            (class template)

is_class checks if a type is a non-union class type
            (class template)

is_function checks if a type is a function type
            (class template)

is_object checks if a type is an object type
            (class template)