gpt4 book ai didi

c++ - 从另一个元组类型的嵌套类型派生元组类型

转载 作者:行者123 更新时间:2023-11-30 04:00:22 25 4
gpt4 key购买 nike

我有这样一个类:

#include <tuple>

// Models is supposed to be a tuple<class... Classes>
template<class Models>
class MyClass
{
std::tuple<
std::tuple_element<0,Models>::type::NestedType,
std::tuple_element<1,Models>::type::NestedType,
std::tuple_element<2,Models>::type::NestedType
> nestedTypedTuple;
};

目前 nestedTypedTuple 的大小固定为 3 个元素,这对于较大的 Models 来说太小了,对于较小的 根本不起作用型号。我想以更通用的方式定义它,以便它的声明适用于 Models 中的任意数量的元素。似乎使用给定的方式 here因为迭代元组将不起作用,因为我需要派生一个类型,而不是在这里调用一个函数。

什么是可行的方法?

最佳答案

选项 #1

template <class Models> class MyClass; // leave undefined

template <class... Ts>
class MyClass<std::tuple<Ts...>>
{
std::tuple<typename Ts::NestedType...> nestedTypedTuple;
};

选项#2

template <class Models>
class MyClass
{
template <std::size_t... Is>
static std::tuple<typename std::tuple_element<Is, Models>::type::NestedType...> helper(std::index_sequence<Is...>);
using NestedTypedTuple = decltype(helper(std::make_index_sequence<std::tuple_size<Models>::value>{}));

NestedTypedTuple nestedTypedTuple;
};

关于c++ - 从另一个元组类型的嵌套类型派生元组类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26360604/

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