namespace std::meta {
consteval bool is_literal_operator_template(info r);
}
概要
リテラル演算子テンプレートであるかを判定する。
リテラル演算子テンプレートとは、template <char...> operator""_suffix()のようなテンプレート化されたユーザー定義リテラル演算子のことである。
戻り値
rがリテラル演算子テンプレートを表す場合にtrueを返す。
例
#include <meta>
// リテラル演算子(テンプレートではない)
long double operator""_km(long double val) { return val * 1000.0L; }
// リテラル演算子テンプレート
template <char... Chars>
constexpr unsigned operator""_b() {
unsigned result = 0;
for (char c : {Chars...}) {
result = result * 2 + (c - '0');
}
return result;
}
int main() {
static_assert(std::meta::is_literal_operator_template(^^operator""_b));
static_assert(!std::meta::is_literal_operator_template(^^operator""_km));
// どちらもリテラル演算子ではある
static_assert(std::meta::is_literal_operator(^^operator""_km));
}
出力
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) ✅ - Visual C++: ??