Why does the `static_assert` always get invoked?
问题 If USE_STATIC_ASSERT is 0 , this works as expected (getting indexed type from the list). If 1 the static_assert() is always tripped. I would have thought that the static_assert() would only happen if all the typename s were exhausted. Why is this not so? #define USE_STATIC_ASSERT 1 template <unsigned int I, typename ...Ts> struct items; template <typename T, typename ...Ts> struct items<0, T, Ts...> { typedef T type; }; template <unsigned int I, typename T, typename ...Ts> struct items<I, T,