[/ Copyright 2010 Neil Groves Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) /] [section:synopsis Synopsis] `` namespace boost { // // Single Pass Range metafunctions // 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; // // Forward Range metafunctions // template< class T > struct range_difference; // // Bidirectional Range metafunctions // template< class T > struct range_reverse_iterator; // // Single Pass Range functions // template< class T > typename range_iterator::type begin( T& r ); template< class T > typename range_iterator::type begin( const T& r ); template< class T > typename range_iterator::type end( T& r ); template< class T > typename range_iterator::type end( const T& r ); template< class T > bool empty( const T& r ); // // Forward Range functions // template< class T > typename range_difference::type distance( const T& r ); template< class T > typename range_size::type size( const T& r ); // // Bidirectional Range functions // template< class T > typename range_reverse_iterator::type rbegin( T& r ); template< class T > typename range_reverse_iterator::type rbegin( const T& r ); template< class T > typename range_reverse_iterator::type rend( T& r ); template< class T > typename range_reverse_iterator::type rend( const T& r ); // // Special const Range functions // template< class T > typename range_iterator::type const_begin( const T& r ); template< class T > typename range_iterator::type const_end( const T& r ); template< class T > typename range_reverse_iterator::type const_rbegin( const T& r ); template< class T > typename range_reverse_iterator::type const_rend( const T& r ); // // String utilities // 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::type > as_array( T& r ); template< class T > iterator_range< typename range_iterator::type > as_array( const T& r ); } // namespace 'boost' `` [endsect]