(14) 模板 conditional_t<T…> ,定义于 < xtr1common > , 在本 模板里也会用到:
(15)void_t 用于构成特化模板,只要 T 可以被编译器推断为某种类型,void_t 就有意义。 STL 库大师们写的代码,多结合 decltype 来完成类型推断。 当然 T 为空也可以。但为空与 decltype 推断不出来,是两回事。本头文件也用到了,简化逻辑,举例学习一下:
其定义如下:
++ 举例:
++ 再举例测试,学习 void_ :
(16)
template <class _Fty, class... _ArgTypes> // 推导结果就是 future< 函数返回值 >
future<_Invoke_result_t<decay_t<_Fty>, decay_t<_ArgTypes>...>> // 管理使用默认策略启动的可调用对象
async(_Fty&& _Fnarg, _ArgTypes&&... _Args) // manages a callable object launched启动 with default policy
{
return _STD async(launch::async | launch::deferred, _STD forward<_Fty>(_Fnarg), _STD forward<_ArgTypes>(_Args)...);
}
(17)
谢谢