Initial commit

This commit is contained in:
M. George Hansen 2025-06-07 14:17:56 -06:00
commit 91d54c58d5
Signed by: mgeorgehansen
SSH key fingerprint: SHA256:JlIGiQLPyQ2RHTH3a2oVlb20Xkh9Glr8DUF4YTXHJxM
42 changed files with 2212 additions and 0 deletions

View file

@ -0,0 +1,25 @@
export module bedrock.semantics:equivalence;
import :utility;
import :referenceable;
import :integral;
namespace br {
export template <typename T, typename U = T>
concept PartialEquivalence = requires(Unref<T> a, Unref<U> b) {
{ a == b } -> SameAs<bool>;
{ a != b } -> SameAs<bool>;
{ b == a } -> SameAs<bool>;
{ b != a } -> SameAs<bool>;
};
export template <PartialEquivalence T>
struct EquivalenceType {
static constexpr bool is_valid = false;
};
export template <typename T>
concept Equivalence = PartialEquivalence<T> && (EquivalenceType<T>::is_valid || Integral<T>);
} // namespace br