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
This commit is contained in:
Paolo Carlini 2010-08-08 14:54:51 +00:00 committed by Paolo Carlini
parent 07f93cbdd5
commit 71234632dd
4 changed files with 71 additions and 4 deletions

View File

@ -1,3 +1,17 @@
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.
2010-08-08 Paolo Carlini <paolo.carlini@oracle.com>
* include/c_global/cmath: Implement US 136.

View File

@ -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)
{

View File

@ -45,7 +45,7 @@ main()
// { dg-warning "note" "" { target *-*-* } 423 }
// { dg-warning "note" "" { target *-*-* } 862 }
// { dg-warning "note" "" { target *-*-* } 510 }
// { dg-warning "note" "" { target *-*-* } 1005 }
// { dg-warning "note" "" { target *-*-* } 1027 }
// { dg-warning "note" "" { target *-*-* } 340 }
// { dg-warning "note" "" { target *-*-* } 290 }
// { dg-warning "note" "" { target *-*-* } 197 }

View File

@ -0,0 +1,31 @@
// { dg-options "-std=gnu++0x" }
// { dg-do compile }
// Copyright (C) 2010 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
#include <ext/rope>
// libstdc++/44963
void test01()
{
__gnu_cxx::crope line("test");
auto ii(std::back_inserter(line));
*ii++ = 'm';
*ii++ = 'e';
}