Variadic-templates类构造函数

the*_*woz 2 c++ variadic variadic-functions variadic-templates c++11

我编写了以下代码来创建一个带有构造函数的类,该构造函数将变量数(N)的整数加上两个double作为参数,如下所示:

#include <cstdio>
#include <cstdlib>

#include <vector>
#include <array>

template <std::size_t N>
class point_t {

public:

  std::vector<int> values;

  template<typename ... Args>
  point_t(Args ... args, double distance, double value) {

    std::array<int , N> list = {(args)...};

    for(std::size_t i=0; i<N; ++i) values[i] = list[i];

  }

};


int main(int argc, char *argv[]) {

  point_t<4> test(1, 2, 3, 4, 3.0, 6.7);

  return 0;

}
Run Code Online (Sandbox Code Playgroud)

编译器返回以下错误:

没有用于初始化'point_t <4>'的匹配构造函数
候选构造函数不可行:需要2个参数,但是提供了6个参数

我错过了什么?

max*_*x66 7

我错过了什么?

只有当它位于最后位置时,才能推断出可变量包.

所以

template<typename ... Args>
point_t(double distance, double value, Args... args)
Run Code Online (Sandbox Code Playgroud)

工作和

template<typename ... Args>
point_t(Args ... args, double distance, double value) {
Run Code Online (Sandbox Code Playgroud)

没有.