On this page
std::is_pointer
Defined in header <type_traits> |
||
---|---|---|
|
(since C++11) |
std::is_pointer
is a UnaryTypeTrait.
Checks whether T
is a pointer to object or function (including pointer to void
, but excluding pointer to member) or a cv-qualified version thereof. Provides the member constant value
which is equal to true
, if T
is an object/function pointer type. Otherwise, value
is equal to false
.
The behavior of a program that adds specializations for std::is_pointer
or std::is_pointer_v
is undefined.
Template parameters
T | - | a type to check |
Helper variable template
|
(since C++17) |
Inherited from std::integral_constant
Member constants
value
[static]
|
true if T is a pointer type, false otherwise (public static member constant) |
Member functions
operator bool
|
converts the object to bool, returns value (public member function) |
operator()
(C++14)
|
returns value (public member function) |
Member types
Type | Definition |
---|---|
value_type |
bool |
type |
std::integral_constant<bool, value> |
Possible implementation
|
Example
#include <type_traits>
int main()
{
struct A
{
int m;
void f() {}
};
int A::*mem_data_ptr = &A::m; // a pointer to member data
void (A::*mem_fun_ptr)() = &A::f; // a pointer to member function
static_assert(
! std::is_pointer<A>::value
&& ! std::is_pointer_v<A> // same thing as above, but in C++17!
&& ! std::is_pointer<A>() // same as above, using inherited operator bool
&& ! std::is_pointer<A>{} // ditto
&& ! std::is_pointer<A>()() // same as above, using inherited operator()
&& ! std::is_pointer<A>{}() // ditto
&& std::is_pointer_v<A*>
&& std::is_pointer_v<A const* volatile>
&& ! std::is_pointer_v<A&>
&& ! std::is_pointer_v<decltype(mem_data_ptr)>
&& ! std::is_pointer_v<decltype(mem_fun_ptr)>
&& std::is_pointer_v<void*>
&& ! std::is_pointer_v<int>
&& std::is_pointer_v<int*>
&& std::is_pointer_v<int**>
&& ! std::is_pointer_v<int[10]>
&& ! std::is_pointer_v<std::nullptr_t>
&& std::is_pointer_v<void (*)()>
);
}
See also
(C++11)
|
checks if a type is a pointer to a non-static member function or object (class template) |
(C++11)
|
checks if a type is a pointer to a non-static member object (class template) |
(C++11)
|
checks if a type is a pointer to a non-static member function (class template) |
(C++11)
|
checks if a type is an array type (class template) |
(C++11)
|
checks if a type is a scalar type (class template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/types/is_pointer