我不明白下面的代码为什么能编译通过?
但这个不行:
struct A{ A(int); }; struct B{ A a{1}; };
但这个不行:
struct A{ A(int); }; struct B{ A a(1); };
错误:在数字常量之前应输入“,”或“…”
编译器为什么不接受第二种形式?我知道最令人烦恼的语法解析模糊性,但我不认为这个问题与此有关。
编辑: 正如Bo在下面的评论中解释的那样,我错了。这个问题确实与令人烦恼的语法解析有关。
我在gcc-5.1.0上尝试了这个问题,使用--std=c++11参数。
A a{int()};
有关,但明确不包括A a(int());
。 - Bo PerssonA a(1);
,因为它会引起令人烦恼的解析。 - Bo Persson