gpt4 book ai didi

c++11:从模板函数构建 std::tuple

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:30:55 26 4
gpt4 key购买 nike

我有以下功能:

template<class T>
T Check(int index);

我如何编写函数 CheckTuple,它在给定元组类型的情况下通过调用 Check 来填充元组? p>

例如:

CheckTuple< std::tuple<int, float, std::string> >()

将返回以下元组:

std::make_tuple( Check<int>(1), Check<float>(2), Check<std::string>(3) )

我看到的其他问题涉及解包一个给定的元组,而不是用这种方式构建一个元组。

最佳答案

使用 C++14 的 integer_sequence 实现您正在寻找的东西变得非常简单.如果您没有可用的,here's a C++11 implementationJonathan Wakely 撰写.

template<typename Tuple, int... I>
Tuple CallCheck(std::integer_sequence<int, I...>)
{
return std::make_tuple(Check<typename std::tuple_element<I, Tuple>::type>(I)...);
}

template<typename Tuple>
Tuple CheckTuple()
{
return CallCheck<Tuple>(std::make_integer_sequence<int, std::tuple_size<Tuple>::value>());
}

// Use it as
auto tup = CheckTuple<std::tuple<int, float, std::string>>();

Live demo

关于c++11:从模板函数构建 std::tuple,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27936332/

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