Tat*_*kow 6 c++ templates tuples c++17
我有一个类,预计将采用std::tuple某些类型(允许任意计数)作为模板参数。我想声明一个类型向量的元组。例如,我有
template <typename T>
class MyClass {/*...*/}
Run Code Online (Sandbox Code Playgroud)
我实例化它
MyClass<std::tuple<int, bool>> my_class;
Run Code Online (Sandbox Code Playgroud)
我的目标是创造一个这样的领域
std::tuple<std::vector<int>, std::vector<bool>> my_tuple;
Run Code Online (Sandbox Code Playgroud)
我知道如果我有一个类定义
template <typename... T>
class MyClass2 {/*...*/}
Run Code Online (Sandbox Code Playgroud)
我可以通过传递没有元组的数据类型来实例化它
MyClass<int, bool> my_class2;
Run Code Online (Sandbox Code Playgroud)
然后简单地创建字段
std::tuple<std::vector<int>, std::vector<bool>> my_tuple2;
Run Code Online (Sandbox Code Playgroud)
使用
std::tuple<std::vector<T>...> my_tuple2;
Run Code Online (Sandbox Code Playgroud)
因此,我想我应该以某种方式从元组中解压缩数据类型。是否可以?
是的,为了添加 cigien 的答案,另一种方法是通过模板专业化来解压它。
template<typename Tuple>
class MyClass;
template<typename... Ts>
class MyClass<std::tuple<Ts...>>
{
// ...
using VectorTuple = std::tuple<std::vector<Ts>...>;
// ...
};
Run Code Online (Sandbox Code Playgroud)