为什么编译器将此行解释为函数定义而不是变量定义:
Y y(X());
在以下代码中:
#include <iostream>
struct X {
X() { std::cout << "X"; }
};
struct Y {
Y(const X &x) { std::cout << "Y"; }
void f() { std::cout << "f"; }
};
int main() {
Y y(X());
y.f();
}
VS2010 在“yf();”行给出以下错误
left of '.f' must have class/struct/union
标准的哪一部分描述了这种行为?以下问题的答案没有提供有关它的详细信息: Most vexing parse