gpt4 book ai didi

c++ - 可变参数模板上的变换算法

转载 作者:行者123 更新时间:2023-11-28 00:15:03 25 4
gpt4 key购买 nike

我正在使用 C++11,我需要像 transform(容器的 STL 算法)这样的东西来转换 template<typename ...T > 进入 <typename ...T::something>所以我可以用它来继承:

例如:

template<typename T>
struct typeOf{
using type = T;
};

template<typename ...T> // All the arguments must be `typeOf`'s
class tupleOf : tuple<T::type...>{
}

这样:

tupleOf<typeOf<int>,typeOf<char>>会给我一个tuple<int,char>

我想在不使用 C++14 功能的情况下执行此操作

最佳答案

你可以这样做:

template <typename T, template <typename> class f>
struct transform;


template <template <typename...> class C, typename...Ts, template <typename> class f>
struct transform<C<Ts...>, f>
{
using type = C<typename f<Ts>::type...>;
};

和用法:

static_assert(std::is_same<std::tuple<char, int>,
transform<std::tuple<char*, int*>,
std::remove_pointer>::type>::value,
"unexpected");

Live Demo .

关于c++ - 可变参数模板上的变换算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30863332/

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