aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2010-08-08 14:54:51 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2010-08-08 14:54:51 +0000
commit71234632dd6ff182f7ce6ed2fe250d3f40038c81 (patch)
treee9d418469f5e42f176816659ee869c02c998b130 /libstdc++-v3/include
parent07f93cbdd551f6e893a9f22296fb50e3e37edbf1 (diff)
downloadgcc-71234632dd6ff182f7ce6ed2fe250d3f40038c81.zip
gcc-71234632dd6ff182f7ce6ed2fe250d3f40038c81.tar.gz
gcc-71234632dd6ff182f7ce6ed2fe250d3f40038c81.tar.bz2
re PR libstdc++/44963 ([DR 1334] Ambiguous function overload using __gnu_cxx::crope with std::back_inserter in c++0x mode)
2010-08-08 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/44963 * include/bits/stl_iterator.h (insert_iterator<>:: operator=(const typename _Container::value_type&, back_insert_iterator<>:: operator=(const typename _Container::value_type&), front_insert_iterator<>:: operator=(const typename _Container::value_type&))): Add in C++0x mode. * testsuite/ext/rope/44963.cc: New. * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Adjust dg-error line number. From-SVN: r163001
Diffstat (limited to 'libstdc++-v3/include')
-rw-r--r--libstdc++-v3/include/bits/stl_iterator.h28
1 files changed, 25 insertions, 3 deletions
diff --git a/libstdc++-v3/include/bits/stl_iterator.h b/libstdc++-v3/include/bits/stl_iterator.h
index 105469a..83a390d 100644
--- a/libstdc++-v3/include/bits/stl_iterator.h
+++ b/libstdc++-v3/include/bits/stl_iterator.h
@@ -416,14 +416,21 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* the end, if you like). Assigning a value to the %iterator will
* always append the value to the end of the container.
*/
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
back_insert_iterator&
operator=(typename _Container::const_reference __value)
{
container->push_back(__value);
return *this;
}
+#else
+ back_insert_iterator&
+ operator=(const typename _Container::value_type& __value)
+ {
+ container->push_back(__value);
+ return *this;
+ }
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
back_insert_iterator&
operator=(typename _Container::value_type&& __value)
{
@@ -499,14 +506,21 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* the front, if you like). Assigning a value to the %iterator will
* always prepend the value to the front of the container.
*/
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
front_insert_iterator&
operator=(typename _Container::const_reference __value)
{
container->push_front(__value);
return *this;
}
+#else
+ front_insert_iterator&
+ operator=(const typename _Container::value_type& __value)
+ {
+ container->push_front(__value);
+ return *this;
+ }
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
front_insert_iterator&
operator=(typename _Container::value_type&& __value)
{
@@ -603,6 +617,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* // vector v contains A, 1, 2, 3, and Z
* @endcode
*/
+#ifndef __GXX_EXPERIMENTAL_CXX0X__
insert_iterator&
operator=(typename _Container::const_reference __value)
{
@@ -610,8 +625,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
++iter;
return *this;
}
+#else
+ insert_iterator&
+ operator=(const typename _Container::value_type& __value)
+ {
+ iter = container->insert(iter, __value);
+ ++iter;
+ return *this;
+ }
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
insert_iterator&
operator=(typename _Container::value_type&& __value)
{