1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 04:27:45 +00:00

AK: Add and use the RemoveCVReference<T> type trait

This commit is contained in:
Ali Mohammad Pur 2021-06-27 23:52:36 +04:30 committed by Ali Mohammad Pur
parent c8270dbe2e
commit 745a1dbb5d
3 changed files with 16 additions and 4 deletions

View file

@ -251,7 +251,7 @@ public:
using Detail::MergeAndDeduplicatePacks<Detail::VariantConstructors<Ts, Variant<Ts...>>...>::MergeAndDeduplicatePacks;
template<typename T, typename StrippedT = RemoveCV<RemoveReference<T>>>
template<typename T, typename StrippedT = RemoveCVReference<T>>
void set(T&& t) requires(can_contain<StrippedT>())
{
constexpr auto new_index = index_of<StrippedT>();
@ -260,7 +260,7 @@ public:
m_index = new_index;
}
template<typename T, typename StrippedT = RemoveCV<RemoveReference<T>>>
template<typename T, typename StrippedT = RemoveCVReference<T>>
void set(T&& t, Detail::VariantNoClearTag) requires(can_contain<StrippedT>())
{
constexpr auto new_index = index_of<StrippedT>();
@ -323,7 +323,7 @@ public:
{
Variant<NewTs...> instance { Variant<NewTs...>::invalid_index, Detail::VariantConstructTag {} };
visit([&](auto& value) {
if constexpr (Variant<NewTs...>::template can_contain<RemoveCV<RemoveReference<decltype(value)>>>())
if constexpr (Variant<NewTs...>::template can_contain<RemoveCVReference<decltype(value)>>())
instance.set(move(value), Detail::VariantNoClearTag {});
});
VERIFY(instance.m_index != instance.invalid_index);
@ -335,7 +335,7 @@ public:
{
Variant<NewTs...> instance { Variant<NewTs...>::invalid_index, Detail::VariantConstructTag {} };
visit([&](const auto& value) {
if constexpr (Variant<NewTs...>::template can_contain<RemoveCV<RemoveReference<decltype(value)>>>())
if constexpr (Variant<NewTs...>::template can_contain<RemoveCVReference<decltype(value)>>())
instance.set(value, Detail::VariantNoClearTag {});
});
VERIFY(instance.m_index != instance.invalid_index);