gpt4 book ai didi

c++ - 多次解包参数包

转载 作者:搜寻专家 更新时间:2023-10-31 02:07:34 26 4
gpt4 key购买 nike

是否可以多次解压一个参数包?

例如:我想获得一个包含 4 个 vector 的元组 - 2 个为 int 类型,2 个为 float 类型。要创建这样一个元组,我想使用如下语法:

ExampleClass<2, int, float> class;

是否可以创建这样的类?我在想这样的事情:

template <int numUnpacks, typename ... Types>
class ExampleClass
{
using Types = std::tuple<std::vector<Types>...>; // here i don't know how to unpack "std::vector<Types>...>" as often as "numUnpacks">
}

最佳答案

这可以使用 C++14 的 integer_sequence 来完成.如果您没有可用的,这里有一个 implementation通过 Jonathan Wakely .

template <int numUnpacks, typename... Types>
struct ExampleClass
{
template<typename T, size_t>
using T_alias = T;

template<typename T, size_t N, typename I = std::make_index_sequence<N>>
struct repeat;

template<typename T, size_t N, size_t... I>
struct repeat<T, N, std::index_sequence<I...>> {
using type = decltype(std::tuple_cat(std::declval<T_alias<T, I>>()...));
};

using type = typename repeat<std::tuple<std::vector<Types>...>, numUnpacks>::type;
};

ExampleClass<2, int, float>::typestd::tuple<std::vector<int>, std::vector<float>, std::vector<int>, std::vector<float>>

Live demo

关于c++ - 多次解包参数包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48482213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com