以下3个gun函数调用有什么区别?
template <class... Ts> void fun(Ts... vs) {
gun(A<Ts...>::hun(vs)...);
gun(A<Ts...>::hun(vs...));
gun(A<Ts>::hun(vs)...);
}
Run Code Online (Sandbox Code Playgroud)
我对使用特定示例解释三个调用的答案感兴趣.
为什么编译器将此行解释为函数定义而不是变量定义:
Y y(X());
Run Code Online (Sandbox Code Playgroud)
在以下代码中:
#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();
}
Run Code Online (Sandbox Code Playgroud)
VS2010在"yf();"行上给出以下错误:
left of '.f' must have class/struct/union
Run Code Online (Sandbox Code Playgroud)
标准的哪一部分描述了这种行为?以下问题的答案并未提供有关它的详细信息: 最令人烦恼的解析