|
template<typename T > |
auto | requires_ (T &&t) -> decltype( concepts::valid_expr( concepts::convertible_to< bool >(t==t), concepts::convertible_to< bool >(t!=t) )) |
|
template<typename T , typename U , meta::if_< std::is_same< T, U >, int > = 0> |
auto | requires_ (T &&, U &&) -> decltype( concepts::valid_expr( concepts::model_of< EqualityComparable, T >() )) |
|
template<typename T , typename U , meta::if_c<!std::is_same< T, U >::value, int > = 0, typename C = CommonReference::reference_t<T const &, U const &>> |
auto | requires_ (T &&, U &&) -> decltype( concepts::valid_expr( concepts::model_of< EqualityComparable, T >(), concepts::model_of< EqualityComparable, U >(), concepts::model_of< WeaklyEqualityComparable, T, U >(), concepts::model_of< CommonReference, T const &, U const & >(), concepts::model_of< EqualityComparable, C >() )) |
|