相关疑难解决方法(0)

创建派生自可变模板包的类型元组

给定一个 size_t 值列表作为可变参数模板参数包,如何根据参数包以这种方式生成派生类型的元组(例如 Matrix),即可变参数的第 n 个元素生成Matrix<n, n+1>. 例如:

make_matrix_tuple<2,3,4,5>() == make_tuple( Matrix<2,3>, Matrix<3,4>, Matrix<4,5> );
Run Code Online (Sandbox Code Playgroud)

如何编写接受size_t参数包的make_matrix_tuple函数?

我所说的派生类型不是继承而是依赖(?)。我不确定正确的术语是什么。
解包参数包很简单

template <typename ElementType, size_t... Sizes>
void make_tuple_of_vectors() { std::tuple < std::array<ElementType, Sizes> ... > tuple; }
Run Code Online (Sandbox Code Playgroud)

但是,我相信在下一部分中我有点不知所措。我正在尝试从参数包中递归解压缩一对参数,如下所示:

template <typename Type, size_t size1, size_t size2>
struct dummy_matrix
{
    size_t SIZE1 = size1;
    size_t SIZE2 = size2;
    using type = Type;
};

template <size_t Iterator, typename ElementType, size_t T, size_t... Sizes>
struct unpack_two
{
    using type = typename unpack_two<Iterator - 1, ElementType, …
Run Code Online (Sandbox Code Playgroud)

c++ templates template-meta-programming variadic-templates c++17

2
推荐指数
1
解决办法
93
查看次数