A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/language/../error/../language/../types/is_member_pointer.html below:

std::is_member_pointer - cppreference.com

template< class T >
struct is_member_pointer;

(since C++11)

std::is_member_pointer is a UnaryTypeTrait.

If T is pointer to non-static member object or a pointer to non-static member function, provides the member constant value equal true. For any other type, value is false.

If the program adds specializations for std::is_member_pointer or std::is_member_pointer_v, the behavior is undefined.

[edit] Template parameters [edit] Helper variable template

template< class T >
constexpr bool is_member_pointer_v = is_member_pointer<T>::value;

(since C++17) Inherited from std::integral_constant Member constants true if T is a member pointer type, 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 [edit] Possible implementation
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<typename std::remove_cv<T>::type> {};
[edit] Example
#include <cassert>
#include <type_traits>
 
static_assert(!std::is_member_pointer_v<int*>);
 
struct S
{
    int i{42};
    int foo() { return 0xF00; }
};
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());
}
[edit] See also

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4