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++: ??