具有多个参数的`decltype`的含义

时间:2014-01-17 12:45:37

标签: c++11

我找到了a decltype-related question and its answers OP和回答者似乎都认为这一点 decltype(t,u)取决于tu的类型。

我认为decltype(t,u)的意图 在链接的问题中是与...兼容的最小类型 在{em> minimal 和兼容的某种意义上,tu都有。 如果它与§5(9)或定义中的公共类型相同 来自§20.9.7.6(3)的std::common_type,那么预期的意思是 decltype(true ? t : u)

然而,似乎C ++ 11只定义了一个参数decltype。 也就是说,解析器被指定接受decltype( 表达式 ) 其中表达式可以是逗号分隔的赋值表达式列表。 重新阅读§7.1.6.2(4)中decltype的规范, 我必须将decltype(t,u)解释为decltype((u))

问题:实际上decltype(t,u)是什么?我错过了什么吗?

编辑:当答案收敛于“这是逗号运算符”时,我仍然希望看到 您是否decltype((u))(对声明的类型的引用)或decltype(u)(声明的类型)的判断。我怀疑前者。

2 个答案:

答案 0 :(得分:2)

这里的逗号是运算符,而不是参数分隔符

答案 1 :(得分:1)

它使用逗号运算符。所以,你是u型。