use*_*020 3 c++ variadic-templates c++11
如何获取整数参数包中的第i个整数?例如
template<int... Is>
struct A
{
enum { CONSTANT_0 = Is[0] }; //Assume the sizeof...(Is) > the index requested
};
Run Code Online (Sandbox Code Playgroud)
像那样:
template <size_t I, int N, int... R>
struct pick : pick <I - 1, R...> { };
template <int N, int... R>
struct pick <0, N, R...> : std::integral_constant <int, N> { };
Run Code Online (Sandbox Code Playgroud)
以便
pick <3, 1, 2, 3, 4, 5, 6>::value
Run Code Online (Sandbox Code Playgroud)
等于4,和
template<int... Is>
struct A
{
enum { CONSTANT_0 = pick <0, Is...>::value };
};
Run Code Online (Sandbox Code Playgroud)
是你如何在你的情况下使用它.
其他方式:
template <size_t I, int... N>
using pick = typename std::tuple_element <I,
std::tuple <std::integral_constant <int, N>...>
>::type;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
231 次 |
| 最近记录: |