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