AK: Loosen the restrictions on non-copyable/non-movable containers

If a type is non-move constructible but move assignable,
its container type may still be move assignable.

Similairly, if a type is non-copy constructible but copy assignable,
its container type may still be copy assignable.
This commit is contained in:
Jonne Ransijn 2025-04-11 15:06:20 +02:00 committed by Andrew Kaster
commit 50bc6fb9d9
Notes: github-actions[bot] 2025-04-23 03:20:44 +00:00

View file

@ -32,7 +32,7 @@ public: \
requires(!(AK::Detail::IsMoveConstructible __VA_ARGS__)) \ requires(!(AK::Detail::IsMoveConstructible __VA_ARGS__)) \
= delete; \ = delete; \
c& operator=(c&&) \ c& operator=(c&&) \
requires(!(AK::Detail::IsMoveConstructible __VA_ARGS__) \ requires(!((AK::Detail::IsMoveConstructible __VA_ARGS__) || (AK::Detail::IsMoveAssignable __VA_ARGS__)) \
|| !(AK::Detail::IsDestructible __VA_ARGS__)) \ || !(AK::Detail::IsDestructible __VA_ARGS__)) \
= delete = delete
@ -47,7 +47,7 @@ public: \
requires(!(AK::Detail::IsCopyConstructible __VA_ARGS__)) \ requires(!(AK::Detail::IsCopyConstructible __VA_ARGS__)) \
= delete; \ = delete; \
c& operator=(c const&) \ c& operator=(c const&) \
requires(!(AK::Detail::IsCopyConstructible __VA_ARGS__) \ requires(!((AK::Detail::IsCopyConstructible __VA_ARGS__) || (AK::Detail::IsCopyAssignable __VA_ARGS__)) \
|| !(AK::Detail::IsDestructible __VA_ARGS__)) \ || !(AK::Detail::IsDestructible __VA_ARGS__)) \
= delete = delete