请教C++语法小问题

超级管理员9527 2019-06-14 07:22:08
微软实现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>
...
...全文
242 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gergul 2019-06-18
  • 打赏
  • 举报
回复
引用 3 楼 超级管理员9527 的回复:
OK,现在的C++只可意会了
  • 打赏
  • 举报
回复
OK,现在的C++只可意会了
gergul 2019-06-14
  • 打赏
  • 举报
回复
第一个成立则1,否则第二个。
gouyanfen 2019-06-14
  • 打赏
  • 举报
回复
依赖第一个表达式的值

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧