|
template<typename Fun , typename T > |
auto | requires_ (Fun &&, T &&) -> decltype( concepts::valid_expr( concepts::model_of< Predicate >(val< Fun >(), val< T >(), val< T >()) )) |
|
template<typename Fun , typename T , typename U , meta::if_< std::is_same< T, U >, int > = 0> |
auto | requires_ (Fun &&, T &&, T &&) -> decltype( concepts::valid_expr( concepts::model_of< Predicate >(val< Fun >(), val< T >(), val< U >()) )) |
|
template<typename Fun , 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_ (Fun &&, T &&, U &&) -> decltype( concepts::valid_expr( concepts::model_of< Relation, Fun, T, T >(), concepts::model_of< Relation, Fun, U, U >(), concepts::model_of< CommonReference, T const &, U const & >(), concepts::model_of< Relation, Fun, C, C >(), concepts::model_of< Predicate, Fun, T, U >(), concepts::model_of< Predicate, Fun, U, T >() )) |
|
void | requires_ (Ts &&...) |
|