Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 可变模板类:基于构造函数参数推断类型_C++_Templates_Variadic Templates - Fatal编程技术网

C++ 可变模板类:基于构造函数参数推断类型

C++ 可变模板类:基于构造函数参数推断类型,c++,templates,variadic-templates,C++,Templates,Variadic Templates,我有一个固定大小的混合容器,我们称之为FixMix。我希望能够调用构造函数,这样就不需要写出类型参数,因为编译器可以推断提供给构造函数的类型。换言之: FixMix<float, double> a(2.5f, 3.5); 带有可变模板的函数已经做到了这一点,所以我想知道构造函数是否也能做到这一点。以下是FixMix的基本类定义: template<typename... item_t> class FixMix { public: FixMix

我有一个固定大小的混合容器,我们称之为FixMix。我希望能够调用构造函数,这样就不需要写出类型参数,因为编译器可以推断提供给构造函数的类型。换言之:

FixMix<float, double> a(2.5f, 3.5);
带有可变模板的函数已经做到了这一点,所以我想知道构造函数是否也能做到这一点。以下是FixMix的基本类定义:

template<typename... item_t> class FixMix {
    public:
        FixMix(void) {}
        FixMix(item_t... items); //This is what I want to change
        ~FixMix(void);
};
模板类FixMix{
公众:
FixMix(void){}
FixMix(item_t…items);//这是我想要更改的内容
~FixMix(无效);
};
关于可变模板的阅读材料并不多,至少没有一个能回答这个问题,所以我一直在尝试自己找出语法,但没有用。如果有可能的话,省略号让我很反感


<>如果它有任何区别,我使用Visual C++ 2013。

我认为你不能用构造函数来做,但是你可以使用一个免费函数和Autoto来避免重复这些类型。像这样的方法应该会奏效:

template <typename... ARGS>
FixMix<ARGS...> make_FixMix(ARGS&&... args)
{
  return FixMix<ARGS...>(std::forward<ARGS>(args)...);
}
template <typename... ARGS>
FixMix<ARGS...> make_FixMix(ARGS&&... args)
{
  return FixMix<ARGS...>(std::forward<ARGS>(args)...);
}
auto var=make_FixMix(2.5f,3.5);