stl_algobase.h (fill, fill_n): Tighten the dispatch: use iterator_traits<>::value_typ...
authorPaolo Carlini <pcarlini@suse.de>
Fri, 25 Jun 2004 10:51:45 +0000 (10:51 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Fri, 25 Jun 2004 10:51:45 +0000 (10:51 +0000)
2004-06-25  Paolo Carlini  <pcarlini@suse.de>

* include/bits/stl_algobase.h (fill, fill_n): Tighten the
dispatch: use iterator_traits<>::value_type, not _Tp.

From-SVN: r83648

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/stl_algobase.h

index d86adfbdc2ecc4e5f1ad9c59384b8ffbd9c217c0..3e76dd7747475e7c31966a5652037af80ed0f4cf 100644 (file)
@@ -1,3 +1,8 @@
+2004-06-25  Paolo Carlini  <pcarlini@suse.de>
+
+       * include/bits/stl_algobase.h (fill, fill_n): Tighten the
+       dispatch: use iterator_traits<>::value_type, not _Tp.
+
 2004-06-25  Paolo Carlini  <pcarlini@suse.de>
 
        * testsuite/25_algorithms/fill/1.cc: Tweak instantiations.
index 0db0ef7daac92a14473eed807d0d1b00cc7fe366..1259f9576895a4f11fa1e5d4e887fd9f9902476b 100644 (file)
@@ -546,7 +546,8 @@ namespace std
                                  _ForwardIterator>)
       __glibcxx_requires_valid_range(__first, __last);
 
-      typedef typename __type_traits<_Tp>::has_trivial_copy_constructor
+      typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType;
+      typedef typename __type_traits<_ValueType>::has_trivial_copy_constructor
        _Trivial;
       std::__fill<_Trivial>::fill(__first, __last, __value);
     }
@@ -621,7 +622,8 @@ namespace std
       // concept requirements
       __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, _Tp>)
 
-      typedef typename __type_traits<_Tp>::has_trivial_copy_constructor
+      typedef typename iterator_traits<_OutputIterator>::value_type _ValueType;
+      typedef typename __type_traits<_ValueType>::has_trivial_copy_constructor
        _Trivial;
       return std::__fill_n<_Trivial>::fill_n(__first, __n, __value);
     }