std::declval<T2>())>::type is a valid type, the member type denotes that type;
После decay ведь тип не может стать invalid ? Да и в реализациях просто его пишут без проверок. На том же cppreference.
template <class T1, class T2>
struct common_type_2_impl<T1, T2, void_t<cond_t<T1, T2>>> {
using type = typename std::decay<cond_t<T1, T2>>::type;
};
Это не уточнение, а один из путей вычисления типа. Здесь не на decay надо смотреть, а на ?:
Проверка здесь есть, внутри void_t
Обсуждают сегодня