如何访问integer_sequence的第n个值?

use*_*974 4 c++ c++14

我想知道如何访问一个第n个值std::integer_sequence.例如给定一种类型

using foo = std::integer_sequence<int, 3, 1, 4>;
Run Code Online (Sandbox Code Playgroud)

我想有类似的东西

auto i = get<foo, 2>(); // i = 4
Run Code Online (Sandbox Code Playgroud)

标准库中有什么东西可以做到吗?如果不是,如果我想在C++ 14(而不是C++ 17)中使用它,我是否需要求助于迭代解决方案?

Dan*_* M. 13

据我所知,没有这样的内置方法,但你可以在一些简洁的行中实现它,而不需要任何迭代:

template<class T, T... Ints>
constexpr T get(std::integer_sequence<T, Ints...>, std::size_t i) {
    constexpr T arr[] = {Ints...};
    return arr[i];
}
Run Code Online (Sandbox Code Playgroud)

了解它的工作原理:https://godbolt.org/z/yAfMeg

可以将参数提升为模板参数(以匹配您的示例)和更多代码.