namespace boost
{
    
    
    
    template< class T, class Enabler=void >
    struct range_iterator;
    template< class T >
    struct range_value;
    template< class T >
    struct range_reference;
    template< class T >
    struct range_pointer;
    template< class T >
    struct range_category;
    
    
    
    template< class T >
    struct range_difference;
    
    
    
    template< class T >
    struct range_reverse_iterator;
    
    
    
    template< class T >
    typename range_iterator<T>::type
    begin( T& r );
    template< class T >
    typename range_iterator<const T>::type
    begin( const T& r );
    template< class T >
    typename range_iterator<T>::type
    end( T& r );
    template< class T >
    typename range_iterator<const T>::type
    end( const T& r );
    template< class T >
    bool
    empty( const T& r );
    
    
    
    template< class T >
    typename range_difference<T>::type
    distance( const T& r );
    template< class T >
    typename range_size<T>::type
    size( const T& r );
    
    
    
    template< class T >
    typename range_reverse_iterator<T>::type
    rbegin( T& r );
    template< class T >
    typename range_reverse_iterator<const T>::type
    rbegin( const T& r );
    template< class T >
    typename range_reverse_iterator<T>::type
    rend( T& r );
    template< class T >
    typename range_reverse_iterator<const T>::type
    rend( const T& r );
    
    
    
    template< class T >
    typename range_iterator<const T>::type
    const_begin( const T& r );
    template< class T >
    typename range_iterator<const T>::type
    const_end( const T& r );
    template< class T >
    typename range_reverse_iterator<const T>::type
    const_rbegin( const T& r );
    template< class T >
    typename range_reverse_iterator<const T>::type
    const_rend( const T& r );
    
    
    
    template< class T >
    iterator_range< ... see below ... >
    as_literal( T& r );
    template< class T >
    iterator_range< ... see below ... >
    as_literal( const T& r );
    template< class T >
    iterator_range< typename range_iterator<T>::type >
    as_array( T& r );
    template< class T >
    iterator_range< typename range_iterator<const T>::type >
    as_array( const T& r );
}