std::indirect_result_t
From cppreference.com
| ヘッダ <iterator> で定義 |
||
| template< class F, class... Is > requires (std::indirectly_readable<Is> && ...) && |
(C++20以降) | |
エイリアステンプレートindirect_result_tは、indirectly_readableな型Is...の逆参照の結果に、invocableな型Fを呼び出したときの結果型を取得します。
[編集] テンプレートパラメータ
| F | - | 呼び出し可能な型 |
| Is | - | 引数に逆参照される、間接的に読み取り可能な型 |
[編集] 例
このコードを実行
#include <iterator> #include <type_traits> struct Fn { long operator()(const int&); int operator()(int&&); short operator()(int, int) const; auto operator()(const float) -> int&; void operator()(int[8]); }; static_assert( std::is_same_v<std::indirect_result_t<Fn, const int*>, long> and std::is_same_v<std::indirect_result_t<Fn, std::move_iterator<int*>>, int> and std::is_same_v<std::indirect_result_t<const Fn, int*, int*>, short> and std::is_same_v<std::indirect_result_t<Fn, float*>, int&> and std::is_same_v<std::indirect_result_t<Fn, int**>, void> ); int main() {}
[編集] 関連項目
| (C++11)(C++20で削除)(C++17) |
呼び出し可能オブジェクトを引数のセットで呼び出した結果の型を推論する (クラステンプレート) |
| (C++26) |
射影によって indirectly_readable 型の値型を計算する(エイリアステンプレート) |