Namespaces
Variants

std:: is_member_function_pointer

From cppreference.net
Metaprogramming library
Type traits
Type categories
(C++11)
(C++11) ( DR* )
is_member_function_pointer
(C++11)
Type properties
(C++11)
(C++11)
(C++14)
(C++11) (deprecated in C++26)
(C++11) ( until C++20* )
(C++11) (deprecated in C++20)
(C++11)
Type trait constants
Metafunctions
(C++17)
Supported operations
Relationships and property queries
Type modifications
Type transformations
(C++11) (deprecated in C++23)
(C++11) (deprecated in C++23)
(C++11)
(C++11) ( until C++20* ) (C++17)

Compile-time rational arithmetic
Compile-time integer sequences
Определено в заголовочном файле <type_traits>
template < class T >
struct is_member_function_pointer ;
(начиная с C++11)

std::is_member_function_pointer является UnaryTypeTrait .

Проверяет, является ли T указателем на нестатическую функцию-член. Предоставляет константу-член value , которая равна true , если T является типом указателя на нестатическую функцию-член. В противном случае value равна false .

Если программа добавляет специализации для std::is_member_function_pointer или std::is_member_function_pointer_v , поведение не определено.

Содержание

Параметры шаблона

T - тип для проверки

Шаблон вспомогательной переменной

template < class T >

constexpr bool is_member_function_pointer_v =

is_member_function_pointer < T > :: value ;
(начиная с C++17)

Унаследовано от std:: integral_constant

Константы-члены

value
[static]
true если T является типом указателя на функцию-член, false в противном случае
(публичная статическая константа-член)

Функции-члены

operator bool
преобразует объект в bool , возвращает value
(публичная функция-член)
operator()
(C++14)
возвращает value
(публичная функция-член)

Типы-члены

Тип Определение
value_type bool
type std:: integral_constant < bool , value >

Возможная реализация

template<class T>
struct is_member_function_pointer_helper : std::false_type {};
template<class T, class U>
struct is_member_function_pointer_helper<T U::*> : std::is_function<T> {};
template<class T>
struct is_member_function_pointer 
    : is_member_function_pointer_helper<typename std::remove_cv<T>::type> {};
**Примечание:** Весь код C++ внутри тегов `
` был сохранен без изменений, как и требовалось, поскольку он содержит технические термины C++ и синтаксис, который не должен переводиться. HTML-разметка также сохранена в оригинальном виде.

Пример

#include <type_traits>
class A
{
public:
    void member() {}
};
int main()
{
    // завершается ошибкой компиляции, если A::member является членом-данных, а не функцией
    static_assert(std::is_member_function_pointer<decltype(&A::member)>::value,
                  "A::member is not a member function."); 
}

Смотрите также

(C++11)
проверяет, является ли тип указателем
(шаблон класса)
проверяет, является ли тип указателем на нестатический член-объект
(шаблон класса)
проверяет, является ли тип указателем на нестатический член-функцию или объект
(шаблон класса)