diff --git a/include/boost/range/iterator_range_core.hpp b/include/boost/range/iterator_range_core.hpp index 571bf7d..c1822fb 100755 --- a/include/boost/range/iterator_range_core.hpp +++ b/include/boost/range/iterator_range_core.hpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -289,6 +290,14 @@ namespace boost return *--last; } + +#ifdef __SUNPRO_CC + reference operator[]( difference_type at ) const + { + BOOST_ASSERT( at >= 0 && at < size() ); + return m_Begin[at]; + } +#else BOOST_DEDUCED_TYPENAME boost::detail::operator_brackets_result::type operator[]( difference_type at ) const { @@ -297,6 +306,7 @@ namespace boost typedef boost::detail::use_operator_brackets_proxy use_proxy; return boost::detail::make_operator_brackets_result(m_Begin + at, use_proxy()); } +#endif // // When storing transform iterators, operator[]()