从参数包创建不同的参数包
Create a different Parameter Pack from a Parameter Pack
我不确定我到底想做什么,所以如果标题不合适,请原谅我。
我有一个采用模板参数包的类模板。我希望构造函数根据参数包中的类型期望类型,更具体地说,我想将每个参数包元素传递给另一个类模板(采用一个参数)来构造构造函数参数。
所以这是我开始的结构:
template<class ElementType>
struct ElementPreset{
//... stores a preset for an element of ElementType
};
template<class... Elements>
class WidgetPreset{
WidgetPreset(ElementPreset<Elements...> pPresets)
:presets(pPresets){}
std::tuple<ElementPreset<Elements...>> presets;
}
上面的代码不起作用,但我正在尝试做的是从Elements
创建一个新的参数包,其中每个元素都是ElementPreset<Element>
而不是Element
。
C++中是否有任何语言支持?
也许
template <typename ... Elements>
struct WidgetPreset{
WidgetPreset(ElementPreset<Elements> ... pPresets)
:presets(pPresets...){}
std::tuple<ElementPreset<Elements>...> presets;
};
我的意思是。。。
(1)当你创建一个class
时,如果你不public
或protected
定义它,一切都private
;所以你的class
构造是private
(2)A ElementPreset<Elements...> pPresets
错误:ElementPreset
只接收一个类型;你必须在类型:ElementPreset<Elements> ... pPresets
之后打开包装
(3)元组的问题相同:std::tuple<ElementPreset<Elements>...>
,而不是std::tuple<ElementPreset<Elements...>>
(4)当你初始化preset
你必须扩展包:presets(pPresets...)
(或presets{pPresets...}
),而不是presets(pPresets)
(5)记住struct
末尾的;
(或class
)
相关文章:
- 在函数中使用 const int size 参数创建数组会在 Visual Studio 中抛出错误 C++:表达式的计
- 如何使用可选的随机种子参数创建 roll_die() 函数
- 基于参数创建数组
- 从可变参数创建枚举?
- 如何从可变参数模板参数创建 std::tuple<>?
- 在 C++ 中按参数创建不同类型的对象?
- 根据参数创建派生类的新实例
- 基于模板参数创建多个类实现
- C++ 从模板参数创建元组向量
- 从从可调用参数创建的线程对象参数移动构造 C++11 线程
- 在构造函数中使用参数创建一个类数组
- 是否可以使用C 函数中的const int参数创建数组
- 如何使用不同对象的模板容器作为参数创建模板类
- C++:基于积分模板参数创建可变长度元组
- 使用按插入方式排序的参数创建哈希映射
- 避免为非默认参数创建临时变量?
- 是否可以根据参数创建返回对旧项目的引用的构造函数
- 使用整数模板参数创建编译时双精度
- C++ 使用数组作为参数创建泛型函数
- 基于参数创建基类中的派生类