std:: indirect_result_t
| Iterator concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator primitives | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Algorithm concepts and utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Indirect callable concepts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Common algorithm requirements | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Utilities | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Iterator adaptors | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ヘッダーで定義
<iterator>
|
||
|
template
<
class
F,
class
...
Is
>
requires
(
std::
indirectly_readable
<
Is
>
&&
...
)
&&
|
(C++20以降) | |
エイリアステンプレート
indirect_result_t
は、
invocable
型
F
を
indirectly_readable
型
Is...
の間接参照結果に対して呼び出した結果の型を取得します。
テンプレートパラメータ
| 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)
(removed in C++20)
(C++17)
|
引数セットで呼び出し可能オブジェクトを呼び出した結果の型を推論する
(クラステンプレート) |
|
(C++26)
|
投影による
indirectly_readable
型の値型を計算する
(エイリアステンプレート) |