mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-28 19:59:17 +00:00
AK: Add IsOneOfIgnoringCVReference
to StdLibExtraDetails.h
Much like `IsOneOfIgnoringCV`, some functions want to ignore both cv-qualifiers _and_ references. Add a template and concept for it.
This commit is contained in:
parent
e5d89c72a6
commit
063be28e90
Notes:
github-actions[bot]
2025-04-23 03:21:41 +00:00
Author: https://github.com/yyny
Commit: 063be28e90
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4310
Reviewed-by: https://github.com/ADKaster ✅
Reviewed-by: https://github.com/DanShaders
Reviewed-by: https://github.com/Hendiadyoin1
Reviewed-by: https://github.com/alimpfard ✅
2 changed files with 12 additions and 0 deletions
|
@ -45,6 +45,9 @@ concept OneOf = IsOneOf<U, Ts...>;
|
||||||
template<typename U, typename... Ts>
|
template<typename U, typename... Ts>
|
||||||
concept OneOfIgnoringCV = IsOneOfIgnoringCV<U, Ts...>;
|
concept OneOfIgnoringCV = IsOneOfIgnoringCV<U, Ts...>;
|
||||||
|
|
||||||
|
template<typename U, typename... Ts>
|
||||||
|
concept OneOfIgnoringCVReference = IsOneOfIgnoringCVReference<U, Ts...>;
|
||||||
|
|
||||||
template<typename T, template<typename...> typename S>
|
template<typename T, template<typename...> typename S>
|
||||||
concept SpecializationOf = IsSpecializationOf<T, S>;
|
concept SpecializationOf = IsSpecializationOf<T, S>;
|
||||||
|
|
||||||
|
@ -185,6 +188,7 @@ using AK::Concepts::IteratorFunction;
|
||||||
using AK::Concepts::IteratorPairWith;
|
using AK::Concepts::IteratorPairWith;
|
||||||
using AK::Concepts::OneOf;
|
using AK::Concepts::OneOf;
|
||||||
using AK::Concepts::OneOfIgnoringCV;
|
using AK::Concepts::OneOfIgnoringCV;
|
||||||
|
using AK::Concepts::OneOfIgnoringCVReference;
|
||||||
using AK::Concepts::SameAs;
|
using AK::Concepts::SameAs;
|
||||||
using AK::Concepts::Signed;
|
using AK::Concepts::Signed;
|
||||||
using AK::Concepts::SpecializationOf;
|
using AK::Concepts::SpecializationOf;
|
||||||
|
|
|
@ -584,6 +584,12 @@ inline constexpr bool IsSameIgnoringCV = IsSame<RemoveCV<T>, RemoveCV<U>>;
|
||||||
template<typename T, typename... Ts>
|
template<typename T, typename... Ts>
|
||||||
inline constexpr bool IsOneOfIgnoringCV = (IsSameIgnoringCV<T, Ts> || ...);
|
inline constexpr bool IsOneOfIgnoringCV = (IsSameIgnoringCV<T, Ts> || ...);
|
||||||
|
|
||||||
|
template<typename T, typename U>
|
||||||
|
inline constexpr bool IsSameIgnoringCVReference = IsSame<RemoveCVReference<T>, RemoveCVReference<U>>;
|
||||||
|
|
||||||
|
template<typename T, typename... Ts>
|
||||||
|
inline constexpr bool IsOneOfIgnoringCVReference = (IsSameIgnoringCVReference<T, Ts> || ...);
|
||||||
|
|
||||||
template<typename...>
|
template<typename...>
|
||||||
struct __InvokeResult { };
|
struct __InvokeResult { };
|
||||||
|
|
||||||
|
@ -682,11 +688,13 @@ using AK::Detail::IsMoveConstructible;
|
||||||
using AK::Detail::IsNullPointer;
|
using AK::Detail::IsNullPointer;
|
||||||
using AK::Detail::IsOneOf;
|
using AK::Detail::IsOneOf;
|
||||||
using AK::Detail::IsOneOfIgnoringCV;
|
using AK::Detail::IsOneOfIgnoringCV;
|
||||||
|
using AK::Detail::IsOneOfIgnoringCVReference;
|
||||||
using AK::Detail::IsPOD;
|
using AK::Detail::IsPOD;
|
||||||
using AK::Detail::IsPointer;
|
using AK::Detail::IsPointer;
|
||||||
using AK::Detail::IsRvalueReference;
|
using AK::Detail::IsRvalueReference;
|
||||||
using AK::Detail::IsSame;
|
using AK::Detail::IsSame;
|
||||||
using AK::Detail::IsSameIgnoringCV;
|
using AK::Detail::IsSameIgnoringCV;
|
||||||
|
using AK::Detail::IsSameIgnoringCVReference;
|
||||||
using AK::Detail::IsSigned;
|
using AK::Detail::IsSigned;
|
||||||
using AK::Detail::IsSpecializationOf;
|
using AK::Detail::IsSpecializationOf;
|
||||||
using AK::Detail::IsTemplateBaseOf;
|
using AK::Detail::IsTemplateBaseOf;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue