【发布时间】:2013-08-29 12:19:43
【问题描述】:
我可以将 SFINAE 用于表达式和 decltype auto 混合吗?
template<class T>
auto function() -> decltype(typename trait<T>::test(), auto) {
return [](){ return T(); };
}
【问题讨论】:
-
decltype(a, b) 应该是什么意思?
-
@StefanoFalasca 表达式
(a, b)使用内置命令运算符。它评估a,丢弃结果,然后评估b。所以decltype(a, b)的类型与decltype(b)相同,但a必须是有效的表达式 -
decltype(a,b)是decltype(expr)。在表达式中,您可以使用逗号运算符执行多项操作,例如在for(expr; expr; expr)你可以写for(...; ...; ++i, ++j)来增加两个索引;表达式的返回类型是最后一个表达式的返回类型,在本例中为decltype(b)。 -
糟糕,我刚刚注意到我在上面的第一条评论中输入了“命令运算符”,我的意思是 comma 运算符,但我的手指显然不想停止输入