refactor(*): make the template class concept indistinguishable from cv-qualified

This commit is contained in:
2022-11-17 20:57:54 +08:00
parent 9a3c957b38
commit f96c000b9e
7 changed files with 24 additions and 24 deletions

View File

@ -137,16 +137,16 @@ struct TVariantSelectedType<T>
NAMESPACE_PRIVATE_END
template <typename T>
concept CTVariant = NAMESPACE_PRIVATE::TIsTVariant<T>::Value;
concept CTVariant = NAMESPACE_PRIVATE::TIsTVariant<TRemoveCV<T>>::Value;
template <typename VariantType>
inline constexpr size_t TVariantNum = NAMESPACE_PRIVATE::TVariantNumImpl<VariantType>::Value;
template <CTVariant T>
inline constexpr size_t TVariantNum = NAMESPACE_PRIVATE::TVariantNumImpl<T>::Value;
template <typename T, typename VariantType>
inline constexpr size_t TVariantIndex = NAMESPACE_PRIVATE::TVariantIndexImpl<T, VariantType>::Value;
template <typename T, CTVariant U>
inline constexpr size_t TVariantIndex = NAMESPACE_PRIVATE::TVariantIndexImpl<T, U>::Value;
template <size_t I, typename VariantType>
using TVariantAlternative = typename NAMESPACE_PRIVATE::TVariantAlternativeImpl<I, VariantType>::Type;
template <size_t I, CTVariant U>
using TVariantAlternative = typename NAMESPACE_PRIVATE::TVariantAlternativeImpl<I, U>::Type;
template <typename... Ts> requires (sizeof...(Ts) > 0 && (true && ... && CDestructible<Ts>))
class TVariant