1
0
forked from Alepha/Alepha

Start by making Comparable a concept.

This commit is contained in:
2025-08-27 17:27:58 -04:00
parent 084ee3744f
commit 15ab3f776e

View File

@ -31,7 +31,7 @@ namespace Alepha::Hydrogen
}
template< typename T >
constexpr bool has_comparable_capability_v= HasCapability< std::decay_t< T >, comparable >;
concept Comparable= HasCapability< T, comparable >;
// Spaceship lens support
@ -47,8 +47,7 @@ namespace Alepha::Hydrogen
template
<
typename T,
typename= std::enable_if_t< has_comparable_capability_v< T > >,
Comparable T,
typename= std::enable_if_t< has_spaceship_lens_member_v< T > >,
overload< __LINE__ > = nullptr
>
@ -89,8 +88,7 @@ namespace Alepha::Hydrogen
template
<
typename T,
typename= std::enable_if_t< has_comparable_capability_v< T > >,
Comparable T,
typename= std::enable_if_t< has_value_lens_member_v< T > >,
overload< __LINE__ > = nullptr
>
@ -102,8 +100,7 @@ namespace Alepha::Hydrogen
template
<
typename T,
typename= std::enable_if_t< has_comparable_capability_v< T > >,
Comparable T,
typename= std::enable_if_t< supports_spaceship_lens_v< T > >,
overload< __LINE__ > = nullptr
>
@ -144,8 +141,7 @@ namespace Alepha::Hydrogen
template
<
typename T,
typename= std::enable_if_t< has_comparable_capability_v< T > >,
Comparable T,
typename= std::enable_if_t< has_equality_lens_member_v< T > >,
overload< __LINE__ > = nullptr
>
@ -157,8 +153,7 @@ namespace Alepha::Hydrogen
template
<
typename T,
typename= std::enable_if_t< has_comparable_capability_v< T > >,
Comparable T,
typename= std::enable_if_t< supports_value_lens_v< T > >,
overload< __LINE__ > = nullptr
>
@ -199,8 +194,7 @@ namespace Alepha::Hydrogen
template
<
typename T,
typename= std::enable_if_t< has_comparable_capability_v< T > >,
Comparable T,
typename= std::enable_if_t< has_strict_weak_order_lens_member_v< T > >,
overload< __LINE__ > = nullptr
>
@ -212,8 +206,7 @@ namespace Alepha::Hydrogen
template
<
typename T,
typename= std::enable_if_t< has_comparable_capability_v< T > >,
Comparable T,
typename= std::enable_if_t< supports_value_lens_v< T > >,
overload< __LINE__ > = nullptr
>
@ -244,8 +237,7 @@ namespace Alepha::Hydrogen
// Operator support:
template
<
typename T,
typename= std::enable_if_t< has_comparable_capability_v< T > >,
Comparable T,
overload< __LINE__ > = nullptr
>
constexpr bool
@ -256,8 +248,7 @@ namespace Alepha::Hydrogen
template
<
typename T,
typename= std::enable_if_t< has_comparable_capability_v< T > >,
Comparable T,
overload< __LINE__ > = nullptr
>
constexpr bool
@ -268,8 +259,7 @@ namespace Alepha::Hydrogen
template
<
typename T,
typename= std::enable_if_t< has_comparable_capability_v< T > >,
Comparable T,
overload< __LINE__ > = nullptr
>
constexpr bool
@ -280,8 +270,7 @@ namespace Alepha::Hydrogen
template
<
typename T,
typename= std::enable_if_t< has_comparable_capability_v< T > >,
Comparable T,
overload< __LINE__ > = nullptr
>
constexpr bool
@ -292,8 +281,7 @@ namespace Alepha::Hydrogen
template
<
typename T,
typename= std::enable_if_t< has_comparable_capability_v< T > >,
Comparable T,
overload< __LINE__ > = nullptr
>
constexpr bool
@ -304,8 +292,7 @@ namespace Alepha::Hydrogen
template
<
typename T,
typename= std::enable_if_t< has_comparable_capability_v< T > >,
Comparable T,
overload< __LINE__ > = nullptr
>
constexpr bool