有没有一种标准方法可以让我在 编译时 在 c++11 中的无符号索引上选择类型?
例如:
using type_0 = static_switch<0,T,U>; // yields type T
using type_1 = static_switch<1,T,U>; // yields type U
如果有 variadic-template 版本,那将非常有用。
最佳答案
这应该可行:
template<std::size_t N, typename... T>
using static_switch = typename std::tuple_element<N, std::tuple<T...> >::type;
另一种方法:
template<std::size_t N, typename T, typename... Ts>
struct static_switch {
using type = typename static_switch<N - 1, Ts...>::type;
};
template<typename T, typename... Ts>
struct static_switch<0, T, Ts...> {
using type = T;
};
关于c++ - 如何在编译时切换/选择类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404102/