最終更新日時(UTC):
が更新

履歴 編集

function
<meta>

std::meta::is_enumerable_type(C++26)

namespace std::meta {
  consteval bool is_enumerable_type(info r);
}

概要

型が列挙可能型であるかを判定する。

列挙可能型とは、次のいずれかを満たす型である:

  • クラス型であり、完全型である
  • 列挙型であり、その宣言に到達可能である(enumerators_of()で列挙子を取得できる)
    • ただし、その列挙型の宣言内では列挙可能型にならない

戻り値

rが列挙可能型を表す場合にtrueを返す。

#include <meta>

enum class Color;
static_assert(!std::meta::is_enumerable_type(^^Color));
enum class Color { red, green, blue };
static_assert( std::meta::is_enumerable_type(^^Color));

class S {};
static_assert( std::meta::is_enumerable_type(^^S));  // 完全なクラス型も列挙可能型

enum class E {
  FALSE, TRUE,
  A = std::meta::is_enumerable_type(^^E) ? TRUE : FALSE
};
static_assert(E::A == E::FALSE);  // 列挙型自身の宣言内では、列挙可能型にならない

int main() {}

出力

バージョン

言語

  • C++26

処理系

参照