From aed63147cb5c4099a4fc3586784be919a84cda04 Mon Sep 17 00:00:00 2001 From: Chris Jefferson Date: Mon, 21 Mar 2005 22:16:15 +0000 Subject: re PR libstdc++/20577 (iter_swap doesn't work anymore with vector) 2005-03-21 Chris Jefferson PR libstdc++/20577 * include/bits/stl_algobase.h (iter_swap): Only delegate iter_swap to swap when the iterator's reference_type is a reference to its value_type. * testsuite/25_algorithms/iter_swap/20577.cc: New. From-SVN: r96837 --- libstdc++-v3/include/bits/stl_algobase.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'libstdc++-v3/include/bits') diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h index a67d2a9..426fcba 100644 --- a/libstdc++-v3/include/bits/stl_algobase.h +++ b/libstdc++-v3/include/bits/stl_algobase.h @@ -155,7 +155,14 @@ namespace std _ValueType2>) __glibcxx_function_requires(_ConvertibleConcept<_ValueType2, _ValueType1>) - std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value>:: + + typedef typename iterator_traits<_ForwardIterator1>::reference + _ReferenceType1; + typedef typename iterator_traits<_ForwardIterator2>::reference + _ReferenceType2; + std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value && + __are_same<_ValueType1 &, _ReferenceType1>::__value && + __are_same<_ValueType2 &, _ReferenceType2>::__value>:: iter_swap(__a, __b); } -- cgit v1.1