gpt4 book ai didi

c++ - 如何从元组创建元组?

转载 作者:行者123 更新时间:2023-11-28 07:31:20 24 4
gpt4 key购买 nike

例如,我有一个转换模板(任何现有的库都可以做到这一点?)

template<class T> struct Convert;
template<> struct Convert<T0> {typedef C0 Type;};
template<> struct Convert<T1> {typedef C1 Type;};
template<> struct Convert<T2> {typedef C2 Type;};

从转换,它转换

std::tuple<T0, T1, T2>; // version A

std::tuple<C0, C1, C2>; // version B

任何一般的方式,比如

template<class tupleA, template<class> class Convert>
{
typedef .... tupleB;
}

其他一些问题:(1) 我可以从一个特定的元组中得到它的可变参数吗?(2) 如果是这样,我可以对可变参数使用转换吗?

最佳答案

试试这个:

template <typename... Args>
struct convert;

template <typename... Args>
struct convert<std::tuple<Args...>>
{
typedef std::tuple<typename Convert<Args>::Type...> type;
};

这是一个示例程序:

#include <type_traits>
#include <tuple>

template<class T> struct Convert;
template<> struct Convert<int> {typedef bool Type;};
template<> struct Convert<char> {typedef int Type;};
template<> struct Convert<bool> {typedef char Type;};

template <typename... Args>
struct convert;

template <typename... Args>
struct convert<std::tuple<Args...>>
{
typedef std::tuple<typename Convert<Args>::Type...> type;
};

int main()
{
static_assert(
std::is_same<
convert<std::tuple<int, char, bool>>::type,
std::tuple<bool, int, char>
>::value, ""
);
}

Demo

关于c++ - 如何从元组创建元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17618938/

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