Namespaces
Variants

std:: is_member_object_pointer

From cppreference.net
Metaprogramming library
Type traits
Type categories
(C++11)
(C++11) ( DR* )
is_member_object_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_object_pointer ;
(начиная с 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 , поведение не определено.

Содержание

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

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

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

template < class T >
constexpr bool is_member_object_pointer_v = is_member_object_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_object_pointer : std::integral_constant<
                                      bool,
                                      std::is_member_pointer<T>::value &&
                                      !std::is_member_function_pointer<T>::value
                                  > {};
**Примечание:** Весь код C++ внутри тегов `
` и `` оставлен без изменений, как и требовалось. HTML-теги и атрибуты также сохранены в оригинале.

Пример

#include <iostream>
#include <type_traits>
int main()
{
    class C {};
    std::cout << "Is member object pointer?\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";
}

Вывод:

Is member object pointer?
true: int(C::*)
false: int(C::*)()

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

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