在编译期间如何切换/选择类型?(How do I switch/select types during compile-time?)
有没有一种标准的方式让我在编译时在c ++ 11的无符号索引中选择一个类型?
例如,像这样的东西:
using type_0 = static_switch<0,T,U>; // yields type T using type_1 = static_switch<1,T,U>; // yields type U如果有一个可变模板版本,这将是非常有用的。
Is there a standard way for me to select a type at compile-time on an unsigned index in c++11?
For example, something like:
using type_0 = static_switch<0,T,U>; // yields type T using type_1 = static_switch<1,T,U>; // yields type UIf there is a variadic-template version, it would be very useful.
最满意答案
这应该工作:
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; };This should work:
template<std::size_t N, typename... T> using static_switch = typename std::tuple_element<N, std::tuple<T...> >::type;Another method:
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; };更多推荐
发布评论