请教C++语法小问题
微软实现STL库,pair类的源码,有一个这样的函数:
template<class _Uty1 = _Ty1,
class _Uty2 = _Ty2,
class =
enable_if_t<is_copy_constructible<_Uty1>::value && is_copy_constructible<_Uty2>::value>,
enable_if_t<is_convertible<const _Uty1&, _Uty1>::value && is_convertible<const _Uty2&, _Uty2>::value, int> = 0
>
constexpr pair(const _Ty1& _Val1, const _Ty2& _Val2)
: first(_Val1), second(_Val2)
{ // construct from specified values
}
第三个模板参数(红色部分代码),
平时enable_if_t单独用过,但这里用逗号分隔了两个,如何解释呢?
是应该按逗号表达式解释呢?还是按二选一解释呢?感觉哪里怪怪的。。。
转换一下应该是类似下面的代码吗?
template<class T1, class T2, class T3=void>
...
template<class T1, class T2, class T3=0>
...
template<class T1, class T2, class T3=void,0>
...