Ale*_*lex 4 c++ compiler-theory most-vexing-parse
我已经看到了关于嵌套构造函数调用和支撑的C++ FQA 条目,并且总是想知道C++解析器如何解析两个以及为什么解析器无法解析它.
所以我明白为什么foo xxx();是模棱两可的.然后foo x(bar());是什么使得模糊,因为它显然没有前瞻性声明.(即:应该有一个语法可以成功检测到这一点).
有人可以解释C++语法那部分的局限性和模糊性吗?
foo x(bar());
Run Code Online (Sandbox Code Playgroud)
这可以是:
1)变量的声明,x其值是默认构造的bar.这是一样的foo x = bar();.
2)一个函数声明,x它返回foo并接受一个参数 - 一个返回a bar并且不带参数的函数.这是一样的foo x(bar (void));