| Type traits | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Compile-time rational arithmetic | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Compile-time integer sequences | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(C++14) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Defined in header <type_traits> | ||
template<class T> struct is_member_pointer; | (since C++11) | |
std::is_member_pointer is aUnaryTypeTrait.
IfT is pointer to non-static member object or a pointer to non-static member function, provides the member constantvalue equaltrue. For any other type,value isfalse.
If the program adds specializations forstd::is_member_pointer orstd::is_member_pointer_v, the behavior is undefined.
Contents |
| T | - | a type to check |
template<class T> constexprbool is_member_pointer_v= is_member_pointer<T>::value; | (since C++17) | |
value [static] | true ifT is a member pointer type,false otherwise(public static member constant) |
operator bool | converts the object tobool, returnsvalue (public member function) |
operator() (C++14) | returnsvalue (public member function) |
| Type | Definition |
value_type | bool |
type | std::integral_constant<bool, value> |
template<class T>struct is_member_pointer_helper:std::false_type{}; template<class T,class U>struct is_member_pointer_helper<T U::*>:std::true_type{}; template<class T>struct is_member_pointer: is_member_pointer_helper<typenamestd::remove_cv<T>::type>{}; |
#include <cassert>#include <type_traits> static_assert(!std::is_member_pointer_v<int*>); struct S{int i{42};int foo(){return0xF00;}};using mem_int_ptr_t=int S::*;using mem_fun_ptr_t=int(S::*)();static_assert(std::is_member_pointer_v<mem_int_ptr_t>);static_assert(std::is_member_pointer_v<mem_fun_ptr_t>); int main(){ S s; mem_int_ptr_t pm=&S::i;assert(s.i== s.*pm); mem_fun_ptr_t pmf=&S::foo;assert((s.*pmf)()== s.foo());}
(C++11) | checks if a type is a pointer type (class template)[edit] |
(C++11) | checks if a type is a non-static member object pointer (class template)[edit] |
(C++11) | checks if a type is a non-static member function pointer (class template)[edit] |