| Home | Libraries | People | FAQ | More

#### Synopsis

    namespace boost
    {
        //
        // Single Pass Range metafunctions
        //

        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;

        //
        // 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<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 );

        //
        // Forward Range functions
        //

        template< class T >
        typename range_difference<T>::type
        distance( const T& r );

        //
        // Bidirectional Range functions
        //

        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 );

        //
        // Random Access Range functions
        //

        template< class T >
        typename range_difference<T>::type
        size( const T& r );

        //
        // Special const Range functions
        //

        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 );

        //
        // 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<T>::type >
        as_array( T& r );

        template< class T >
        iterator_range< typename range_iterator<const T>::type >
        as_array( const T& r );

    } // namespace 'boost'