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:
parent
07f93cbdd5
commit
71234632dd
|
@ -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.
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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 }
|
||||
|
|
|
@ -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';
|
||||
}
|
Loading…
Reference in New Issue