From patchwork Wed Oct 15 13:20:19 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Wakely X-Patchwork-Id: 399991 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]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3E43514012B for ; Thu, 16 Oct 2014 00:20:42 +1100 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:subject:message-id:mime-version:content-type; q=dns; s= default; b=poyXlXC01epIqRVRcBLIvwPTX5baYtHLfiOx88bGGDbCsHcgw+dWP idET2v54VPeIkjZCLtbogi6RhLk/FSM9xBHIfi93LtlhAh5CQCXfeUKba/H3lpPv VfHYRRWNLbbzVGe9xaRPLn0hqCY1G+XHK72QwpLhaCDVlwkPoJOK6A= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:subject:message-id:mime-version:content-type; s= default; bh=FeD+DlVJLxlTTwJz4cEVYOr79lE=; b=GgD8aGHNpj0PqQqU6vbz M1e0DbqpePWSIvl35uiioif9+oGjKXGgWrVc7KWZtxGKvr+Un+pbaHoFlyLsGOYU kpzjje6MAWcWi39bYYtTiK12DFCG6t54VM0vPTsYi0CCT6YWju1VPZg/+Cnkl+PE ++EPECmeuT/jlANebs6nW+4= Received: (qmail 24276 invoked by alias); 15 Oct 2014 13:20:24 -0000 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 Received: (qmail 24253 invoked by uid 89); 15 Oct 2014 13:20:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL, BAYES_00, SPF_HELO_PASS, SPF_PASS, T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 15 Oct 2014 13:20:22 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s9FDKKYn018113 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 15 Oct 2014 09:20:20 -0400 Received: from localhost (ovpn-116-121.ams2.redhat.com [10.36.116.121]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s9FDKJjL001382; Wed, 15 Oct 2014 09:20:20 -0400 Date: Wed, 15 Oct 2014 14:20:19 +0100 From: Jonathan Wakely To: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org Subject: [patch] Add missing 'const' to std::complex primary template Message-ID: <20141015132019.GI4197@redhat.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) Some more constexpr members that need to be 'const' in C++14. Tested x86_64-linux, committed to trunk. commit acf46fd496a3975e7a6d267791bc41db8c2fc4d0 Author: Jonathan Wakely Date: Tue Oct 14 18:42:05 2014 +0100 * include/std/complex (complex::real, complex::imag): Add const. * testsuite/26_numerics/complex/value_operations/constexpr2.cc: New. diff --git a/libstdc++-v3/include/std/complex b/libstdc++-v3/include/std/complex index bf302c1..6670ed7 100644 --- a/libstdc++-v3/include/std/complex +++ b/libstdc++-v3/include/std/complex @@ -144,11 +144,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // DR 387. std::complex over-encapsulated. _GLIBCXX_ABI_TAG_CXX11 constexpr _Tp - real() { return _M_real; } + real() const { return _M_real; } _GLIBCXX_ABI_TAG_CXX11 constexpr _Tp - imag() { return _M_imag; } + imag() const { return _M_imag; } #else /// Return real part of complex number. _Tp& diff --git a/libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr2.cc b/libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr2.cc new file mode 100644 index 0000000..e85e211 --- /dev/null +++ b/libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr2.cc @@ -0,0 +1,28 @@ +// { dg-do compile } +// { dg-options "-std=gnu++14" } + +// Copyright (C) 2014 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 + +int main() +{ + constexpr std::complex c{}; + constexpr auto r __attribute__((unused)) = real(c); + constexpr auto i __attribute__((unused)) = imag(c); +}