Range-v3
Range algorithms, views, and actions for the Standard Library
ranges::v3::concepts::Common Struct Reference

Public Types

template<typename T , typename U , typename... Rest>
using value_t = common_type_t< T, U, Rest... >
 

Public Member Functions

template<typename T , typename U , meta::if_< std::is_same< uncvref_t< T >, uncvref_t< U >>, int > = 0>
auto requires_ (T &&, U &&) -> void
 
template<typename T , typename U , meta::if_c<!std::is_same< uncvref_t< T >, uncvref_t< U >>::value, int > = 0, typename C = value_t<T, U>, typename R = CommonReference::reference_t<T const &, U const &>>
auto requires_ (T &&, U &&) -> decltype( concepts::valid_expr( concepts::model_of< Same, C, value_t< U, T >>(), C(val< T && >()), C(val< U && >()), concepts::model_of< CommonReference, T const &, U const & >(), concepts::model_of< CommonReference, C &, R && >() ))
 
template<typename T , typename U , typename... Rest, typename Common_ = Common, typename C = value_t<T, U>>
auto requires_ (T &&, U &&, Rest &&...) -> decltype( concepts::valid_expr( concepts::model_of< Common_, T, U >(), concepts::model_of< Common_, C, Rest... >() ))