This is a VS error (please tell Microsoft). The code should work as it is.
Until then, you can resort to how we used this problem: tag disptaching.
template<int pos, typename... T>
void check_tuple_impl(std::true_type, T... types) {
}
template<int pos, typename... T>
void check_tuple_impl(std::false_type, T... types) {
using Type = typename std::tuple_element<pos, std::tuple<T...>>::type;
}
template<int pos, typename... T>
void check_tuple(T... types) {
check_tuple_impl<pos>(std::integral_constant<bool, (pos <= -1)>{}, types...);
}
Barry source
share