我的编译器是最新的VC++ 2013 RC。
int f(bool b)
{
return {}; // OK
return b ? 1 : { }; // C2059: syntax error : '{'
return b ? 1 : {0}; // C2059: syntax error : '{'
return b ? {1} : {0}; // C2059: syntax error : '{'
}
为什么不能在三元运算符中使用braced-init-list?
这个行为是C++标准定义为格式错误还是VC++编译器的错误?
最佳答案
好的,这是标准关于braced-init-list(8.5.3.1)的内容:
由于这里没有提到条件运算符,因此我猜您的编译器是正确的。还要注意,条件运算符期望在:
(5.16)的两侧都有表达式,据我所知,大括号初始化器不是表达式。
关于c++ - 为什么不能在三元运算符中使用braced-init-list?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18843017/