OSDN Git Service

2004-05-17 Benjamin Kosnik <bkoz@redhat.com>
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / include / debug / safe_iterator.h
index 7482d6c..8a4123a 100644 (file)
@@ -35,6 +35,7 @@
 #include <debug/debug.h>
 #include <debug/formatter.h>
 #include <debug/safe_base.h>
+#include <bits/cpp_type_traits.h>
 
 namespace __gnu_debug
 {
@@ -88,6 +89,7 @@ namespace __gnu_debug
       typedef iterator_traits<_Iterator> _Traits;
 
     public:
+      typedef _Iterator                           _Base_iterator;
       typedef typename _Traits::iterator_category iterator_category;
       typedef typename _Traits::value_type        value_type;
       typedef typename _Traits::difference_type   difference_type;
@@ -132,7 +134,13 @@ namespace __gnu_debug
        *  @pre @p x is not singular
       */
       template<typename _MutableIterator>
-        _Safe_iterator(const _Safe_iterator<_MutableIterator, _Sequence>& __x)
+        _Safe_iterator(
+          const _Safe_iterator<_MutableIterator,
+          typename std::__enable_if<
+                     _Sequence,
+                     (std::__are_same<_MutableIterator,
+                      typename _Sequence::iterator::_Base_iterator>::_M_type)
+                   >::_M_type>& __x)
        : _Safe_iterator_base(__x, _M_constant()), _M_current(__x.base())
         {
          _GLIBCXX_DEBUG_VERIFY(!__x._M_singular(),