diff --git a/include/boost/range/begin.hpp b/include/boost/range/begin.hpp index 16353eb..e7e03f4 100755 --- a/include/boost/range/begin.hpp +++ b/include/boost/range/begin.hpp @@ -15,6 +15,7 @@ # pragma once #endif +#include #include #ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING @@ -46,7 +47,8 @@ namespace range_detail } template< typename C > - inline BOOST_DEDUCED_TYPENAME range_iterator::type + inline BOOST_DEDUCED_TYPENAME range_iterator< + typename remove_const::type >::type boost_range_begin( C& c ) { return c.begin(); @@ -140,7 +142,8 @@ namespace range_detail template< class T > -inline BOOST_DEDUCED_TYPENAME range_iterator::type begin( T& r ) +inline BOOST_DEDUCED_TYPENAME range_iterator< + typename remove_const::type >::type begin( T& r ) { #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \ !BOOST_WORKAROUND(__GNUC__, < 3) \ diff --git a/include/boost/range/end.hpp b/include/boost/range/end.hpp index 0655a47..5907ed3 100755 --- a/include/boost/range/end.hpp +++ b/include/boost/range/end.hpp @@ -15,6 +15,7 @@ # pragma once #endif +#include #include #ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING @@ -47,7 +48,8 @@ namespace range_detail } template< typename C > - inline BOOST_DEDUCED_TYPENAME range_iterator::type + inline BOOST_DEDUCED_TYPENAME range_iterator< + typename remove_const::type >::type boost_range_end( C& c ) { return c.end(); @@ -139,7 +141,8 @@ namespace range_detail #endif template< class T > -inline BOOST_DEDUCED_TYPENAME range_iterator::type end( T& r ) +inline BOOST_DEDUCED_TYPENAME range_iterator< + typename remove_const::type >::type end( T& r ) { #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \ !BOOST_WORKAROUND(__GNUC__, < 3) \ diff --git a/include/boost/range/rbegin.hpp b/include/boost/range/rbegin.hpp index 06b7314..99d6558 100755 --- a/include/boost/range/rbegin.hpp +++ b/include/boost/range/rbegin.hpp @@ -35,10 +35,12 @@ rbegin( C& c ) #else template< class C > -inline BOOST_DEDUCED_TYPENAME range_reverse_iterator::type +inline BOOST_DEDUCED_TYPENAME range_reverse_iterator< + typename remove_const::type >::type rbegin( C& c ) { - typedef BOOST_DEDUCED_TYPENAME range_reverse_iterator::type + typedef BOOST_DEDUCED_TYPENAME range_reverse_iterator< + typename remove_const::type >::type iter_type; return iter_type( end( c ) ); } diff --git a/include/boost/range/rend.hpp b/include/boost/range/rend.hpp index 151a035..a235271 100755 --- a/include/boost/range/rend.hpp +++ b/include/boost/range/rend.hpp @@ -35,10 +35,12 @@ rend( C& c ) #else template< class C > -inline BOOST_DEDUCED_TYPENAME range_reverse_iterator::type +inline BOOST_DEDUCED_TYPENAME range_reverse_iterator< + typename remove_const::type >::type rend( C& c ) { - typedef BOOST_DEDUCED_TYPENAME range_reverse_iterator::type + typedef BOOST_DEDUCED_TYPENAME range_reverse_iterator< + typename remove_const::type >::type iter_type; return iter_type( begin( c ) ); }