From 452f32da5a43903bca58e08836a3df3bd4edb227 Mon Sep 17 00:00:00 2001 From: Axel Naumann <Axel.Naumann@cern.ch> Date: Thu, 20 Mar 2008 14:40:40 +0000 Subject: [PATCH] Second try to fix the ugly cast of iter<A> to iter<B>. Just hard cast the container... git-svn-id: http://root.cern.ch/svn/root/trunk@22789 27541ba8-7e3a-0410-8455-c3a389f83636 --- cint/reflex/inc/Reflex/internal/InternalTools.h | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/cint/reflex/inc/Reflex/internal/InternalTools.h b/cint/reflex/inc/Reflex/internal/InternalTools.h index bcf5326264f..02112a061e0 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(); } }; -- GitLab