小编Lau*_*tei的帖子

使用可变参数模板进行扩展

以下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)

我对使用特定示例解释三个调用的答案感兴趣.

c++ templates variadic-templates c++11

36
推荐指数
2
解决办法
1835
查看次数

函数定义还是变量定义?

为什么编译器将此行解释为函数定义而不是变量定义:

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)

标准的哪一部分描述了这种行为?以下问题的答案并未提供有关它的详细信息: 最令人烦恼的解析

c++ most-vexing-parse language-lawyer

5
推荐指数
2
解决办法
262
查看次数

您有钻石继承有用的例子吗?

我有兴趣寻找钻石继承是一件好事的例子。我只在理论上读过,并没有在实践中遇到过。

c++

2
推荐指数
1
解决办法
248
查看次数