std::is_member_function_pointer — cppreference.com
Материал из cppreference.com
<tbody> </tbody>
|
|
(начиная с 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 (начиная с C++17) не определено.
Параметры шаблона
Шаблон вспомогательной переменной
<tbody> </tbody>
|
|
(начиная с C++17) | |
Унаследован от std::integral_constant
Константы элементы
true, если T является типом указателя на функцию-элемент, false иначе (public static константа-элемент) |
Функции-элементы
преобразует объект в bool, возвращает value (public функция-элемент) | |
возвращает value (public функция-элемент) |
Типы элементы
| Тип | Определение |
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 > {};
Пример
#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 не является функцией-элементом."); }