std::is_pointer (3) - Linux Manuals

std::is_pointer: std::is_pointer


std::is_pointer - std::is_pointer


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

Checks whether T is a pointer_to_object or a pointer to function (but not a pointer to member/member function). Provides the member constant value which is equal to true, if T is a object/function pointer type. 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_pointer_v = is_pointer<T>::value;

Inherited from std::integral_constant

Member constants

value true if T is a pointer type , 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_pointer_helper : std::false_type {};
  template< class T > struct is_pointer_helper<T*> : std::true_type {};
  template< class T > struct is_pointer : is_pointer_helper<typename std::remove_cv<T>::type> {};


// Run this code

  #include <iostream>
  #include <type_traits>

  class A {};

  int main()
      std::cout << std::boolalpha;
      std::cout << std::is_pointer<A>::value << '\n';
      std::cout << std::is_pointer<A *>::value << '\n';
      std::cout << std::is_pointer<A &>::value << '\n';
      std::cout << std::is_pointer<int>::value << '\n';
      std::cout << std::is_pointer<int *>::value << '\n';
      std::cout << std::is_pointer<int **>::value << '\n';
      std::cout << std::is_pointer<int[10]>::value << '\n';
      std::cout << std::is_pointer<std::nullptr_t>::value << '\n';



See also

is_member_pointer checks if a type is a pointer to an non-static member function or object
                           (class template)

is_member_object_pointer checks if a type is a pointer to a non-static member object
                           (class template)

is_member_function_pointer checks if a type is a pointer to a non-static member function
                           (class template)

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

is_scalar checks if a type is a scalar type
                           (class template)