From patchwork Sun Aug 8 14:59:09 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Carlini X-Patchwork-Id: 61215 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 0B568B6EF3 for ; Mon, 9 Aug 2010 00:59:24 +1000 (EST) Received: (qmail 31022 invoked by alias); 8 Aug 2010 14:59:20 -0000 Received: (qmail 31006 invoked by uid 22791); 8 Aug 2010 14:59:19 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE X-Spam-Check-By: sourceware.org Received: from vsmtp4.tin.it (HELO vsmtp4.tin.it) (212.216.176.224) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 08 Aug 2010 14:59:13 +0000 Received: from [192.168.0.4] (79.17.189.251) by vsmtp4.tin.it (8.5.113) id 4BCE3CBE0934AD90; Sun, 8 Aug 2010 16:59:09 +0200 Message-ID: <4C5EC63D.9050209@oracle.com> Date: Sun, 08 Aug 2010 16:59:09 +0200 From: Paolo Carlini User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100714 SUSE/3.0.6 Thunderbird/3.0.6 MIME-Version: 1.0 To: "gcc-patches@gcc.gnu.org" CC: libstdc++ Subject: [v3] libstdc++/44963 X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Hi, tested x86_64-linux, committed to mainline and 4_5-branch. Paolo. /////////////////////// 2010-08-08 Paolo Carlini 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. Index: include/bits/stl_iterator.h =================================================================== --- include/bits/stl_iterator.h (revision 162994) +++ include/bits/stl_iterator.h (working copy) @@ -416,14 +416,21 @@ * 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 @@ * 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 @@ * // 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 @@ ++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) { Index: testsuite/ext/rope/44963.cc =================================================================== --- testsuite/ext/rope/44963.cc (revision 0) +++ testsuite/ext/rope/44963.cc (revision 0) @@ -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 +// . + +#include + +// libstdc++/44963 +void test01() +{ + __gnu_cxx::crope line("test"); + auto ii(std::back_inserter(line)); + + *ii++ = 'm'; + *ii++ = 'e'; +} Index: testsuite/20_util/weak_ptr/comparison/cmp_neg.cc =================================================================== --- testsuite/20_util/weak_ptr/comparison/cmp_neg.cc (revision 162994) +++ testsuite/20_util/weak_ptr/comparison/cmp_neg.cc (working copy) @@ -45,7 +45,7 @@ // { 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 }