0

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

FixMix<float, double> a(2.5f, 3.5);

我想将其简化为:

FixMix 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);
};

关于可变参数模板的阅读材料并不多,至少没有一个似乎可以回答这个问题,所以我一直试图自己弄清楚语法但无济于事。让我失望的是省略号,如果它甚至可能的话。

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

4

1 回答 1

2

我不认为你可以在构造函数中做到这一点,但你可以使用自由函数和自动来避免重复类型。像这样的东西应该工作:

template <typename... ARGS>
FixMix<ARGS...> make_FixMix(ARGS&&... args)
{
  return FixMix<ARGS...>(std::forward<ARGS>(args)...);
}

用法:

auto var=make_FixMix(2.5f,3.5);
于 2013-11-03T02:03:31.147 回答