std::meta::has_identifier
С ru.cppreference.net
| Определён в заголовке <meta>
|
||
consteval bool has_identifier( std::meta::info r );
|
(начиная с C++26) | |
Определяет, имеет ли то, что представляет r связанный идентификатор (включая идентификатор суффикса литерала).
Формально:
- Если
rпредставляет сущность с typedef-именем для целей компоновки, возвращаетtrue. - В противном случае, если
rпредставляет безымянный класс, перечисление, переменную, битовое поле или пространство имён, возвращаетfalse. - В противном случае, если
rпредставляет псевдоним типа, возвращает!std::meta::has_template_arguments(r). - В противном случае, если
rпредставляет тип, возвращаетtrueесли:
rпредставляет тип класса без cv-квалификаторов иstd::meta::has_template_arguments(r)равенfalse, илиrпредставляет тип перечисления без cv-квалификаторов.
- В противном случае, если
rпредставляет функцию, возвращаетtrueеслиstd::meta::has_template_arguments(r)равенfalse, и функция не является конструктором, деструктором, функцией-оператором или функцией преобразования. - В противном случае, если
rпредставляет шаблон, возвращаетtrueесли шаблон не является шаблоном конструктора, шаблоном функции-оператора или шаблоном функции преобразования. - В противном случае, если
rпредставляет параметр функции функции, которая является экземпляром шаблона функции, и параметр является элементом пакета параметров функции, возвращаетfalse. - В противном случае, если
rпредставляет параметр функцииPфункцииF, то пустьSбудет множеством объявлений, игнорируя любые явные экземпляры, которые достижимы из точки в контексте вычисления и которые объявляют либоF, либо шаблонную функцию, специализацией которой являетсяF; возвращаетtrueесли
- существует объявление
DвS, которое вводит имяNдля либоP, либо параметра, соответствующегоPв шаблонной функции, которую объявляетD, и - ни одно объявление в
Sне делает этого, используя любое имя, отличное отN.
- существует объявление
void fun(int);
constexpr std::meta::info r = parameters_of(^^fun)[0];
static_assert(!has_identifier(r));
void fun(int x);
static_assert(has_identifier(r));
void fun(int x);
static_assert(has_identifier(r));
void poison() {
void fun(int y);
}
static_assert(!has_identifier(r));
- В противном случае, если
rпредставляет переменную, возвращаетfalseесли либо переменная соответствует элементу пакета параметров функции, либоstd::meta::has_template_arguments(r)равенtrue, и возвращаетtrueв противном случае. - В противном случае, если
rпредставляет структурированную привязку, возвращаетfalseесли структурированная привязка является элементом пакета структурированных привязок, илиtrueв противном случае. - В противном случае, если
rпредставляет перечислитель, нестатический элемент данных, пространство имён или псевдоним пространства имён, возвращаетtrue. - В противном случае, если
rпредставляет отношение прямой базовой связи, возвращаетstd::meta::has_identifier(std::meta::type_of(r)). - В противном случае, если
rпредставляет описание элемента данных (T, N, A, W, NUA, ANN), возвращаетtrueесли имя описания N не равно ⊥. - В противном случае возвращает
false.
Параметры
| r | - | значение рефлексии |
Возвращаемое значение
true если то, что представляет r имеет идентификатор, false в противном случае.
Пример
| Этот раздел неполон Причина: нет примера |
Смотри также
(C++26) |
преобразует перечислитель meta::operators в его символьное имя (функция) |
(C++26) |
если отражённая сущность имеет идентификатор, получает её имя (функция) |
| получает строку, подходящую для идентификации отражённой сущности (функция) |