名前空間
変種
操作

std::experimental::ranges::invoke

From cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
汎用ユーティリティライブラリ
ユーティリティコンポーネント
関数オブジェクト
invoke
メタプログラミングと型特性
タグ付きペアとタプル
                          
タグ指定子
                                      
                          
 
template< class F, class... Args >
std::result_of_t<F&&(Args&&...)> invoke( F&& f, Args&&... args );
(ranges TS)

Callableオブジェクト f をパラメータ args で呼び出し、結果を返します。これは、return INVOKE(std::forward<F>(f), std::forward<Args>(args)...); と同等です。ここで、INVOKE(f, t1, t2, ..., tN) は次のように定義されます。

  • もし std::is_base_of<T, std::decay_t<decltype(t1)>>::valuetrue であれば、 INVOKE(f, t1, t2, ..., tN)(t1.*f)(t2, ..., tN) と同等です。
  • そうでなければ、 INVOKE(f, t1, t2, ..., tN)((t1).*f)(t2, ..., tN) と同等です。
  • もし std::is_base_of<T, std::decay_t<decltype(t1)>>::valuetrue であれば、 INVOKE(f, t1)t1.*f と同等です。
  • そうでなければ、 INVOKE(f, t1)(*t1).*f と同等です。
  • そうでなければ、 INVOKE(f, t1, t2, ..., tN)f(t1, t2, ..., tN) と同等です(つまり、 f は FunctionObject です)。

[編集] パラメータ

f - 呼び出される Callable オブジェクト
args - f に渡す引数

[編集] 関連項目

(C++17)(C++23)
任意の呼び出し可能 (Callable)オブジェクトを所与の引数で呼び出す (戻り値の型を指定することも可能)(C++23以降)
(関数テンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)