- functional[meta header]
- std[meta namespace]
- move_only_function[meta class]
- function[meta id-type]
- cpp23[meta cpp]
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 [mark verified]
- ICC: ??
- Visual C++: ??