1
0
forked from Alepha/Alepha

Conceptualize value_lens member support.

This commit is contained in:
2025-08-28 00:14:35 -04:00
parent 5dd58a1a06
commit 9b42ad06de

View File

@ -77,23 +77,17 @@ namespace Alepha::Hydrogen
// Value lens support
template< typename T, typename= void >
struct has_value_lens_member : std::false_type {};
template< typename T >
struct has_value_lens_member< T, std::void_t< decltype( std::declval< const T & >().value_lens() ) > > : std::true_type {};
concept MemberValueLensed=
Comparable< T >
and
requires( const T &val )
{
{ val.value_lens() } -> Concepts::Comparable;
};
template< typename T >
constexpr bool has_value_lens_member_v= has_value_lens_member< T >::value;
template
<
Comparable T,
typename= std::enable_if_t< has_value_lens_member_v< T > >,
overload< __LINE__ > = nullptr
>
constexpr decltype( auto )
value_lens( T &t )
value_lens( const MemberValueLensed auto &t )
{
return t.value_lens();
}