| #pragma once | |
| #include <concepts> | |
| #include <type_traits> | |
| namespace stdplus | |
| { | |
| template <typename T, typename U> | |
| concept WeaklyEqualityComparableWith = requires( | |
| const std::remove_reference_t<T>& t, const std::remove_reference_t<U>& u) { | |
| { | |
| t == u | |
| } -> std::convertible_to<bool>; | |
| { | |
| t != u | |
| } -> std::convertible_to<bool>; | |
| { | |
| u == t | |
| } -> std::convertible_to<bool>; | |
| { | |
| u != t | |
| } -> std::convertible_to<bool>; | |
| }; | |
| template <typename T> | |
| concept TriviallyCopyable = std::is_trivially_copyable_v<T>; | |
| } // namespace stdplus |