std::indirect_result_t
來自 cppreference.com
< cpp | 迭代器 (iterator)
定義於標頭檔案 <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 型別的值型別(別名模板) |