std::is_member_object_pointer - cppreference.com
From cppreference.com
|
|
(since C++11) | |
std::is_member_object_pointer is a UnaryTypeTrait.
Checks whether T is a non-static member object pointer. Provides the member constant value which is equal to true, if T is a non-static member object pointer type. Otherwise, value is equal to false.
If the program adds specializations for std::is_member_object_pointer or std::is_member_object_pointer_v, the behavior is undefined.
Template parameters
Helper variable template
|
|
(since C++17) | |
Inherited from std::integral_constant
Member constants
true if T is a pointer to member object, false otherwise (public static member constant) |
Member functions
converts the object to bool, returns value (public member function) | |
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_member_object_pointer : std::integral_constant< bool, std::is_member_pointer<T>::value && !std::is_member_function_pointer<T>::value > {};
Example
#include <iostream> #include <type_traits> int main() { class C {}; std::cout << "Is member object pointer?\n" << std::boolalpha << std::is_member_object_pointer_v<int(C::*)> << ": int(C::*)\n" << std::is_member_object_pointer_v<int(C::*)()> << ": int(C::*)()\n"; }
Output:
Is member object pointer? true: int(C::*) false: int(C::*)()