|  | 
| template<typename I , typename S > | 
| using | ranges::common_iterator_t = meta::conditional_t< std::is_same< I, S >::value, I, detail::common_iterator_impl_t< I, S > > | 
|  | 
| template<typename Rng > | 
| using | ranges::range_common_iterator_t = common_iterator_t< iterator_t< Rng >, sentinel_t< Rng > > | 
|  | 
| template<typename Rng > | 
| using | ranges::range_common_reference_t = iter_common_reference_t< iterator_t< Rng > > | 
|  | 
| template<typename Rng > | 
| using | ranges::range_difference_t = iter_difference_t< iterator_t< Rng > > | 
|  | 
| template<typename Rng > | 
| using | ranges::range_reference_t = iter_reference_t< iterator_t< Rng > > | 
|  | 
| template<typename Rng > | 
| using | ranges::range_rvalue_reference_t = iter_rvalue_reference_t< iterator_t< Rng > > | 
|  | 
| template<typename Rng > | 
| using | ranges::range_size_t = decltype(ranges::size(std::declval< Rng & >())) | 
|  | 
| template<typename Rng > | 
| using | ranges::range_value_t = iter_value_t< iterator_t< Rng > > | 
|  |