std::is_member_object_pointer — cppreference.com
Материал из cppreference.com
<tbody> </tbody>
|
|
(начиная с C++11) | |
std::is_member_object_pointer является UnaryTypeTrait.
Проверяет, является ли T нестатическим указателем на объект элемент. Предоставляет константу-элемент value, которая равна true, если T является нестатическим типом указателя на объект элемент. Иначе value равна false.
Поведение программы, добавляющей специализации для std::is_member_object_pointer или std::is_member_object_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_object_pointer : std::integral_constant< bool, std::is_member_pointer<T>::value && !std::is_member_function_pointer<T>::value > {};
Пример
#include <iostream> #include <type_traits> int main() { class C {}; std::cout << "Указатель на объект элемент?\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"; }
Вывод:
Указатель на объект элемент? true: int(C::*) false: int(C::*)()