std::indirect_result_t
来自 cppreference.com
定义在头文件 <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)(C++20 中已删除)(C++17) |
推导出使用一组参数调用可调用对象的结果类型 (类模板) |
(C++26) |
计算通过投影获得的 indirectly_readable 类型的值类型(别名模板) |