namespace std {
template <class R, class F, class... Args>
constexpr R invoke_r(F&& f, Args&&... args)
noexcept(is_nothrow_invocable_r_v<R, F, Args...>);
}
概要
関数呼び出し可能なオブジェクトf
とその引数args...
の組み合わせでINVOKE要件に従った関数呼び出しを行う。
R
が(CV修飾された)void
でなければ、戻り値はR
型へ暗黙変換される。
テンプレートパラメータ制約
is_invocable_r_v<R, F, Args...>
がtrue
戻り値
INVOKE<R>(std::forward<F>(f), std::forward<Args>(args)...)
例
#include <iostream>
#include <functional>
// ASCIIコード 0x43 == 'C'
int ch() { return 0x43; }
int main()
{
std::cout << std::invoke_r<char>(ch()) << std::endl;
}
出力例
C
バージョン
言語
- C++23
処理系
- Clang: ??
- GCC: ??
- Visual C++: ??