这个问题在这里已经有了答案:
template parameter packs access Nth type and Nth element
(5 个回答)
2年前关闭。
我想知道如何访问 std::integer_sequence
的第 n 个值.例如给定一个类型
using foo = std::integer_sequence<int, 3, 1, 4>;
我想要类似的东西
auto i = get<foo, 2>(); // i = 4
标准库中有什么东西可以做到这一点吗?如果不是,如果我希望它在 C++14(而不是 C++17)中工作,我是否需要求助于迭代解决方案?
最佳答案
据我所知,没有这样的内置方法,但您可以自己用几行简洁的代码实现它,而无需任何迭代:
template<class T, T... Ints>
constexpr T get(std::integer_sequence<T, Ints...>, std::size_t i) {
constexpr T arr[] = {Ints...};
return arr[i];
}
在这里查看它是如何工作的:https://godbolt.org/z/yAfMeg
可以使用更多代码将参数提升为模板参数(以匹配您的示例)。
关于c++ - 如何访问 integer_sequence 的第 n 个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53223910/