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

履歴 編集

function
<meta>

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

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

処理系

参照