diff --git a/Modules/Core/ObjectList/include/otbObjectList.h b/Modules/Core/ObjectList/include/otbObjectList.h
index 2f14d8011713623c9a70f2f2c4435ed79ba8ba70..7c3737c88d89d1c365e293de7fecb42163e93b53 100644
--- a/Modules/Core/ObjectList/include/otbObjectList.h
+++ b/Modules/Core/ObjectList/include/otbObjectList.h
@@ -468,7 +468,7 @@ public:
     friend class ConstIterator;
     friend class ReverseIterator;
     /** typedef of the internal iterator */
-    typedef typename InternalContainerType::reverse_iterator InternalReverseConstIteratorType;
+    typedef typename InternalContainerType::const_reverse_iterator InternalReverseConstIteratorType;
     /** Constructor */
     ReverseConstIterator() {};
     /** Constructor with iternal iterator parameter */
diff --git a/Modules/Core/ObjectList/include/otbObjectList.txx b/Modules/Core/ObjectList/include/otbObjectList.txx
index 9fcbc82a8a69b4f781b18013b2db129dfa8479bc..84f600c6fd2480db7c8dfedca12e923fa602f7da 100644
--- a/Modules/Core/ObjectList/include/otbObjectList.txx
+++ b/Modules/Core/ObjectList/include/otbObjectList.txx
@@ -246,7 +246,11 @@ typename ObjectList<TObject>::ReverseIterator
 ObjectList<TObject>
 ::Insert(ReverseIterator position, ObjectPointerType element)
 {
-  ReverseIterator iter(m_InternalContainer.insert(position.GetIter(), element));
+  ReverseIterator iter(
+    InternalContainerType::reverse_iterator(
+      m_InternalContainer.insert(position.GetIter().base(), element)
+      )
+    );
   this->Modified();
   return iter;
 }