gpt4 book ai didi

c++ - 通过模板参数给定其长度,在编译时生成相同类型的 std::tuple

转载 作者:可可西里 更新时间:2023-11-01 18:04:22 27 4
gpt4 key购买 nike

在 C++ 中,我如何实现一个带有指示元组长度的 int 模板参数的函数并生成具有该长度的 std::tuple?

例如

func<2>() returns std::tuple<int, int>();
func<5>() returns std::tuple<int, int, int, int, int>().

最佳答案

这是一个带有别名模板的递归解决方案,它可以在 C++11 中实现:

template <size_t I,typename T> 
struct tuple_n{
template< typename...Args> using type = typename tuple_n<I-1, T>::template type<T, Args...>;
};

template <typename T>
struct tuple_n<0, T> {
template<typename...Args> using type = std::tuple<Args...>;
};
template <size_t I,typename T> using tuple_of = typename tuple_n<I,T>::template type<>;

例如,如果我们想要“三元组 double ”,我们可以这样写:

tuple_of<3, double> t;

关于c++ - 通过模板参数给定其长度,在编译时生成相同类型的 std::tuple,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38885406/

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