aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@suse.de>2004-06-25 10:51:45 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2004-06-25 10:51:45 +0000
commit1a277d94fe2581d1d51a77fd25ae9c3cec1b75c2 (patch)
tree31726c02d5a61f273186e2e27943faa4aeecfd62
parent68d560d4d612ad0683bae7b36708ef88685316c5 (diff)
downloadgcc-1a277d94fe2581d1d51a77fd25ae9c3cec1b75c2.zip
gcc-1a277d94fe2581d1d51a77fd25ae9c3cec1b75c2.tar.gz
gcc-1a277d94fe2581d1d51a77fd25ae9c3cec1b75c2.tar.bz2
stl_algobase.h (fill, fill_n): Tighten the dispatch: use iterator_traits<>::value_type, not _Tp.
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
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/bits/stl_algobase.h6
2 files changed, 9 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index d86adfb..3e76dd7 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,10 @@
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.
* testsuite/25_algorithms/fill/2.cc: Likewise.
diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h
index 0db0ef7..1259f95 100644
--- a/libstdc++-v3/include/bits/stl_algobase.h
+++ b/libstdc++-v3/include/bits/stl_algobase.h
@@ -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);
}