template <class... Args>
static constexpr decltype(auto) operator()(Args&&... args) noexcept(/*see below*/);
概要
constant_wrapperが保持する値を、関数として呼び出す。
戻り値
call-exprを以下のように定めたとき、call-exprを返す:
- すべての
remove_cvref_t<Args>...がconstexpr-paramのモデルであり、かつconstant_wrapper<INVOKE(value, remove_cvref_t<Args>::value...)>が妥当な型である場合は、constant_wrapper<INVOKE(value, remove_cvref_t<Args>::value...)>{} - そうでない場合は、
INVOKE(value, std::forward<Args>(args)...)
備考
- 静的メンバ関数である。
- 引数がすべて
constant_wrapperであり、その結果をふたたびconstant_wrapperで包める場合は、結果を包んで「型の世界」にとどめる。そうでない場合は、保持する値をアンラップして呼び出した結果をそのまま返す。 - 例外指定は
noexcept(call-expr)と等価である。
例
出力
バージョン
言語
- C++26
処理系
- Clang: 23 ✅
- GCC: 16.1 ✅
- Visual C++: 2026 Update 2 ❌