相关疑难解决方法(0)

从std :: tuple <some_types ...>开始创建子元组

让我们假设std::tuple<some_types...>给出了一个.我想创建一个新std::tuple的类型是索引的类型[0, sizeof...(some_types) - 2].例如,让我们假设起始元组是std::tuple<int, double, bool>.我想获得一个定义为的子元组std::tuple<int, double>.

我对可变参数模板很新.作为第一步,我试着写一个struct负责存储不同类型的原始文件std::tuple,目的是创建一个同类的新元组(如std::tuple<decltype(old_tuple)> new_tuple).

template<typename... types>
struct type_list;

template<typename T, typename... types>
struct type_list<T, types...> : public type_list<types...>  {
    typedef T type;
};


template<typename T>
struct type_list<T> {
    typedef T type;
};
Run Code Online (Sandbox Code Playgroud)

我想做的是:

std::tuple<type_list<bool, double, int>::type...> new_tuple // this won't work
Run Code Online (Sandbox Code Playgroud)

下一步是丢弃参数包中的最后一个元素.如何访问type存储的几个type_list?以及如何丢弃其中一些?

谢谢.

c++ templates variadic-templates c++11 stdtuple

4
推荐指数
2
解决办法
2895
查看次数

标签 统计

c++ ×1

c++11 ×1

stdtuple ×1

templates ×1

variadic-templates ×1