diff --git a/cint/reflex/inc/Reflex/internal/InternalTools.h b/cint/reflex/inc/Reflex/internal/InternalTools.h index bcf5326264f6b102c82ac7a0e61265723e6d9d52..02112a061e00b713e05a8bae3076006fad94612c 100644 --- a/cint/reflex/inc/Reflex/internal/InternalTools.h +++ b/cint/reflex/inc/Reflex/internal/InternalTools.h @@ -25,26 +25,22 @@ namespace Reflex { template < typename CONT > static typename std::vector<TO>::iterator Begin( const CONT & cont ) { - if ( ! cont.size()) return End<CONT>(cont); - else return typename std::vector<TO>::iterator((TO*)&cont[0]); + return ((typename std::vector<TO> &)const_cast<CONT &>(cont)).begin(); } template < typename CONT > static typename std::vector<TO>::iterator End( const CONT & cont ) { - typename std::vector<TO>::iterator it = typename std::vector<TO>::iterator((TO*)&cont[cont.size()-1]); - return it++; + return ((typename std::vector<TO> &)const_cast<CONT &>(cont)).end(); } template < typename CONT > static typename std::vector<TO>::const_reverse_iterator RBegin( const CONT & cont ) { - if ( ! cont.size()) return REnd<CONT>(cont); - else return typename std::vector<TO>::const_reverse_iterator(typename std::vector<TO>::iterator((TO*)&cont[cont.size()-1])); + return ((typename std::vector<TO> &)cont).rbegin(); } template < typename CONT > static typename std::vector<TO>::const_reverse_iterator REnd( const CONT & cont ) { - typename std::vector<TO>::iterator it = typename std::vector<TO>::iterator((TO*)&cont[0]); - return typename std::vector<TO>::const_reverse_iterator(it--); + return ((typename std::vector<TO> &)cont).rend(); } };