将我遇到的问题归结为本质,我可以通过首先在逗号表达式中执行无操作 lambda 来将变量初始化为 int,如下所示:
int main(){
auto x = ( []{}(), 10 ); // same effect as auto x = 10;
}
但是如果我不给初始化表达式加上括号,
int main(){
auto y = []{}(), 10; // won't compile
}
所有 gcc、clang 和 MSVC 都抱怨尝试y
使用void
表达式进行初始化。
为什么我必须给逗号表达式加上括号才能将其用作初始值设定项?