可变参数模板化类:基于构造函数参数推断类型
Variadic Templated Classes: Infer types based on constructor parameters
我有一个固定大小的混合容器,我们称之为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。
我认为你不能在构造函数中做到这一点,但你可以使用自由函数和 auto 来避免重复这些类型。这样的事情应该有效:
template <typename... ARGS>
FixMix<ARGS...> make_FixMix(ARGS&&... args)
{
return FixMix<ARGS...>(std::forward<ARGS>(args)...);
}
用法:
auto var=make_FixMix(2.5f,3.5);
相关文章:
- C++:使用运算符 = 调用多参数构造函数
- 通过零参数构造函数创建的 glm::mat4 应该包含哪些值?
- 好奇的混合与可变参数构造函数
- 具有默认值的单个参数构造函数是否与默认构造函数相同?
- 为什么我们需要创建一个单参数构造函数来使用临时的无名称对象
- 在可变参数构造函数中初始化常量数组
- C++ 显式多参数构造函数歧义
- 零一参数构造函数
- 可变参数构造函数中的 SFINAE
- 当没有显式关键字与单参数构造函数一起使用时,编译器可以发出警告
- 可变参数类模板和可变参数构造函数
- 确保模板参数类型与其可变参数构造函数的类型匹配
- C++默认参数构造函数与内联初始化优先级
- 如何在 c++ 中将包含复制构造函数的类的参数构造函数称为私有?
- 自动存储中没有无参数构造函数的类对象和异常
- 警告:用两个参数构造函数返回对象时,表达结果未使用
- 如何在C++中调用无参数构造函数
- 在 c++ 中具有多个参数构造函数的模板类存在问题
- 可变参数构造函数优先于用户提供的移动构造函数,除非默认
- 如何从可变参数构造函数参数构造任何对象?