【发布时间】:2018-09-14 12:31:57
【问题描述】:
我一直在阅读 STL 文件以了解更好的方法来格式化我的代码,并学习提高效率的技巧。我一直在阅读线程文件,但我无法弄清楚某些代码的作用。
template<class _Fn,
class... _Args,
class = enable_if_t<!is_same<decay_t<_Fn>, thread>::value>>
explicit thread(_Fn&& _Fx, _Args&&... _Ax)
{ // construct with _Fx(_Ax...)
...
}
std::enable_if_t是
template<bool _Test,
class _Ty = void>
using enable_if_t = typename enable_if<_Test, _Ty>::type;
template<class _Ty>
struct enable_if<true, _Ty>
{ // type is _Ty for _Test
using type = _Ty;
};
该代码在线程和 str1common STL 中均受版权保护。
我唯一的问题是class = enable_if_t<...> 是做什么的?
【问题讨论】:
-
这是一个带有默认参数的未命名模板参数。它只是为了确保
enable_if_t解析为一种类型。 -
我当然不建议你阅读 STL 文件。
标签: c++ stl c++14 variadic-templates sfinae