forked from Alepha/Alepha
Start by making Comparable a concept.
This commit is contained in:
@ -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
|
||||
|
||||
Reference in New Issue
Block a user