From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5555 invoked by alias); 19 Oct 2011 22:48:47 -0000 Received: (qmail 5538 invoked by uid 22791); 19 Oct 2011 22:48:46 -0000 X-SWARE-Spam-Status: No, hits=-6.3 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,SPF_HELO_PASS,TW_CX,TW_DC X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 19 Oct 2011 22:48:25 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p9JMmPXX018984 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 19 Oct 2011 18:48:25 -0400 Received: from shotwell (ovpn-113-176.phx2.redhat.com [10.3.113.176]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p9JMmNVW013377 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Wed, 19 Oct 2011 18:48:24 -0400 Date: Wed, 19 Oct 2011 23:40:00 -0000 From: Benjamin Kosnik To: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org, 3dw4rd@verizon.net Subject: [v3] tr2: bool_set, dynamic_bitset, ratio Message-ID: <20111019154823.631acb66@shotwell> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/c9z+GHI7hLNVPbmMckb0c5h" Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-10/txt/msg01798.txt.bz2 --MP_/c9z+GHI7hLNVPbmMckb0c5h Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 1207 Hi Edward! I have reviewed and selectively merged your development branch, libstdcxx-tr2-ideas-branch, into trunk. As ISO C++ is now looking at new library efforts for TR2 (and N2965 has already been checked in to trunk) I thought it well-timed. Please check my work, patch attached. On libstdcxx-tr2-ideas-branch, I found: 1) N1718 + extensions for polynomial. 2) N2136 bool_set 3) N2050 dynamic_bitset 4) ratio extensions for binary 5) cmath extensions 6) C++0x rope Of these, I selected 2, 3, and 4 for merging. It is sad to leave N1718 unmerged, I think there is a lot of good work here and frankly see N1744 (marked with open status for LWG) as a weaker candidate. But it's hard for me to justify putting this in given that it was explicitly rejected by LWG. Perhaps you have current status or thoughts? For the rope extensions, I would suggest just adding C++0x bits to ext/rope, instead of making tr2/rope. The additions look interesting but I just saw declarations and no actual implementation so I punted. I would encourage you to continue working on TR2 projects! This future work can now proceed on mainline, without a special branch. tested x86_64/linux -benjamin --MP_/c9z+GHI7hLNVPbmMckb0c5h Content-Type: application/x-bzip Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=20111019-1.patch.bz2 Content-length: 19663 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 Uj7Lf/i7kinChIYRUNyw --MP_/c9z+GHI7hLNVPbmMckb0c5h--