namespace boost
{
template< class T >
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_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_difference<T>::type
size( 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 );
}