如何制作递归编译时可变结构模板

问题描述 投票:1回答:1

我试图在c ++中创建一个可变参数模板来创建一个由模板参数定义的静态(非动态分配)结构。

我尝试在3天内谷歌,但我认为文档和我制定查询的能力在这里结束。

这就是我想要的:

myTemplate<1,5,2,8> myinstance;

myInstance会给我这个:

myinstance { int[1], int[5], int[2], int[8] };

那么如何在c ++中使用variadic模板实现这一目标呢?我已经知道部分专业化和那种东西,但文档在递归方面缺乏。

谢谢。

c++ c++11 templates variadic-templates
1个回答
10
投票

你可以使用std::tuple

#include <tuple>
#include <array>

template<std::size_t... ns>
struct foo {
    std::tuple<std::array<int, ns>...> contents;
};

foo<1, 5, 2, 8> my_foo;

int main() {
    std::get<1>(my_foo.contents)[3] = 4;
}
© www.soinside.com 2019 - 2024. All rights reserved.