【发布时间】:2014-01-17 12:45:37
【问题描述】:
我在其中找到了a decltype-related question and its answers
OP 和回答者似乎都认为
decltype(t,u) 取决于 t 和 u 的类型。
我想decltype(t,u) 的本意是
在链接的问题中是与兼容的最小类型
t 和 u,在某种意义上最小和兼容。
如果它的意思类似于 §5(9) 或定义中的 common type
std::common_type 来自 §20.9.7.6(3),那么预期的含义是
decltype(true ? t : u).
但是,C++11 似乎只定义了一个单参数decltype。
也就是说,解析器被指定接受decltype( 表达式 )
其中 expression 可以是 assignment-expression 的逗号分隔列表。
从§7.1.6.2(4) 重新阅读decltype 的规范,
我必须将decltype(t,u) 解释为decltype((u))。
问题:那么 decltype(t,u) 实际上是什么?我错过了什么吗?
编辑:随着答案集中在“这是逗号运算符”上,我仍然希望看到
你判断它是decltype((u))(对声明类型的引用)还是decltype(u)(声明类型)。我怀疑是前者。
【问题讨论】:
标签: c++11