R operator()(ArgTypes... args) /*cv*/ /*ref*/ noexcept(/*noex*/);
概要
関数を呼び出す。
operator()のCV修飾子 cv, 参照修飾子 ref, noexcept例外指定 noex は、move_only_functionに指定するテンプレートパラメータR(ArgTypes...)部のものと等しい。
説明用のプレースホルダ inv-quals を次のように定義する :
- ref が空(参照修飾無し)ならば、cv
& - そうでなければ、cv ref
事前条件
*thisは関数ポインタまたは関数オブジェクトを保持していること。
効果
*thisが保持しているF型の関数ポインタまたは関数オブジェクトfに対して、INVOKE<R>(static_cast<F /*inv-quals*/>(f), std::forward<ArgTypes>(args)...)を行う。
戻り値
R型がvoidの場合は何も返さない。そうでなければ、関数呼び出しの戻り値を返す。
例
#include <iostream>
#include <functional>
int ident(int x)
{ return x; }
int main()
{
std::move_only_function<int(int)> f = ident;
// 関数呼び出し : 保持しているident()関数を呼び出す
int result = f(1);
std::cout << result << std::endl;
}
出力
1
バージョン
言語
- C++23
処理系
- Clang: ??
- GCC: 12.1 ✅
- ICC: ??
- Visual C++: ??