我找到了a decltype
-related question and its answers
OP和回答者似乎都认为这一点
decltype(t,u)
取决于t
和u
的类型。
我认为decltype(t,u)
的意图
在链接的问题中是与...兼容的最小类型
在{em> minimal 和兼容的某种意义上,t
和u
都有。
如果它与§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)
(声明的类型)的判断。我怀疑前者。
答案 0 :(得分:2)
这里的逗号是运算符,而不是参数分隔符
答案 1 :(得分:1)
它使用逗号运算符。所以,你是u型。