std::meta::has_identifier
ja.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を返します:
rcv 修飾されていないクラス型を表し、std::meta::has_template_arguments(r)がfalseである、またはrcv 修飾されていない列挙型を表す。
- そうでなく、
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)を表す場合、記述の名前trueN が ⊥ でなければ を返します。 - そうでなければ、
falseを返します。
引数
| r | - | リフレクション値 |
戻り値
truer が表すものが識別子を持つ場合は false、そうでなければ
。
| 例 このセクションは不完全です |
理由: 例がありません
u8symbol_of |
(C++26) 列挙子をそのシンボル名に変換します (関数) |
(C++26) |
反映されたエンティティが識別子を持つ場合、その名前を取得します (関数) |
| 反映されたエンティティを識別するのに適した文字列を取得します (関数) |