diff --git a/alib2std/src/extensions/iterator.hpp b/alib2std/src/extensions/iterator.hpp
index 1b2f482d7f2fcdead33179d9e9fb981b08faf6f9..1373c176b8fb94db993086f6b71c1affaf9518e3 100644
--- a/alib2std/src/extensions/iterator.hpp
+++ b/alib2std/src/extensions/iterator.hpp
@@ -14,17 +14,34 @@ namespace ext {
 
 template<class T>
 class reverser {
-	T& m_Container;
+	T & m_Container;
 
 public:
-	reverser(T& container) : m_Container ( container ) {
+	reverser ( T & container ) : m_Container ( container ) {
 	}
 
-	std::reverse_iterator<typename std::conditional<std::is_const<T>::value,typename T::const_iterator,typename T::iterator>::type> begin() const {
+	typename T::reverse_iterator begin ( ) const {
 		return m_Container.rbegin();
 	}
 
-	std::reverse_iterator<typename std::conditional<std::is_const<T>::value,typename T::const_iterator,typename T::iterator>::type> end() const {
+	typename T::reverse_iterator end ( ) const {
+		return m_Container.rend();
+	}
+};
+
+template < class T >
+class reverser < const T > {
+	const T & m_Container;
+
+public:
+	reverser ( const T & container ) : m_Container ( container ) {
+	}
+
+	typename T::const_reverse_iterator begin ( ) const {
+		return m_Container.rbegin();
+	}
+
+	typename T::const_reverse_iterator end ( ) const {
 		return m_Container.rend();
 	}
 };