sl@0: // Boost.Range library sl@0: // sl@0: // Copyright Thorsten Ottosen 2003-2004. Use, modification and sl@0: // distribution is subject to the Boost Software License, Version sl@0: // 1.0. (See accompanying file LICENSE_1_0.txt or copy at sl@0: // http://www.boost.org/LICENSE_1_0.txt) sl@0: // sl@0: // For more information, see http://www.boost.org/libs/range/ sl@0: // sl@0: sl@0: #ifndef BOOST_RANGE_RBEGIN_HPP sl@0: #define BOOST_RANGE_RBEGIN_HPP sl@0: sl@0: #if defined(_MSC_VER) && (_MSC_VER >= 1200) sl@0: # pragma once sl@0: #endif sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: namespace boost sl@0: { sl@0: sl@0: #ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING sl@0: sl@0: template< class C > sl@0: inline BOOST_DEDUCED_TYPENAME range_reverse_result_iterator::type sl@0: rbegin( C& c ) sl@0: { sl@0: return BOOST_DEDUCED_TYPENAME range_reverse_result_iterator::type( end( c ) ); sl@0: } sl@0: sl@0: #else sl@0: sl@0: template< class C > sl@0: inline BOOST_DEDUCED_TYPENAME range_reverse_iterator< sl@0: typename remove_const::type >::type sl@0: rbegin( C& c ) sl@0: { sl@0: typedef BOOST_DEDUCED_TYPENAME range_reverse_iterator< sl@0: typename remove_const::type >::type sl@0: iter_type; sl@0: return iter_type( boost::end( c ) ); sl@0: } sl@0: sl@0: template< class C > sl@0: inline BOOST_DEDUCED_TYPENAME range_const_reverse_iterator::type sl@0: rbegin( const C& c ) sl@0: { sl@0: typedef BOOST_DEDUCED_TYPENAME range_const_reverse_iterator::type sl@0: iter_type; sl@0: return iter_type( boost::end( c ) ); sl@0: } sl@0: sl@0: #endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING sl@0: sl@0: template< class T > sl@0: inline BOOST_DEDUCED_TYPENAME range_const_reverse_iterator::type sl@0: const_rbegin( const T& r ) sl@0: { sl@0: return boost::rbegin( r ); sl@0: } sl@0: sl@0: } // namespace 'boost' sl@0: sl@0: #endif