complex (operator+(const complex<>&, const _Tp&), [...]): Do not assume real() returns a reference (against DR 387).
2009-03-10 Paolo Carlini <paolo.carlini@oracle.com> * include/std/complex (operator+(const complex<>&, const _Tp&), operator+(const _Tp&, const complex<>&), operator-(const complex<>&, const _Tp&), operator-(const _Tp&, const complex<>&)): Do not assume real() returns a reference (against DR 387). * testsuite/26_numerics/complex/dr387_2.cc: New. From-SVN: r144770
This commit is contained in:
parent
b1ab21e7f5
commit
23cdf8e8f6
@ -1,3 +1,12 @@
|
||||
2009-03-10 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* include/std/complex (operator+(const complex<>&, const _Tp&),
|
||||
operator+(const _Tp&, const complex<>&),
|
||||
operator-(const complex<>&, const _Tp&),
|
||||
operator-(const _Tp&, const complex<>&)): Do not assume real()
|
||||
returns a reference (against DR 387).
|
||||
* testsuite/26_numerics/complex/dr387_2.cc: New.
|
||||
|
||||
2009-03-02 Benjamin Kosnik <bkoz@redhat.com>
|
||||
|
||||
* testsuite/thread/pthread4.cc: Move...
|
||||
|
@ -333,7 +333,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
operator+(const complex<_Tp>& __x, const _Tp& __y)
|
||||
{
|
||||
complex<_Tp> __r = __x;
|
||||
__r.real() += __y;
|
||||
__r += __y;
|
||||
return __r;
|
||||
}
|
||||
|
||||
@ -342,7 +342,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
operator+(const _Tp& __x, const complex<_Tp>& __y)
|
||||
{
|
||||
complex<_Tp> __r = __y;
|
||||
__r.real() += __x;
|
||||
__r += __x;
|
||||
return __r;
|
||||
}
|
||||
//@}
|
||||
@ -363,7 +363,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
operator-(const complex<_Tp>& __x, const _Tp& __y)
|
||||
{
|
||||
complex<_Tp> __r = __x;
|
||||
__r.real() -= __y;
|
||||
__r -= __y;
|
||||
return __r;
|
||||
}
|
||||
|
||||
@ -372,7 +372,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
operator-(const _Tp& __x, const complex<_Tp>& __y)
|
||||
{
|
||||
complex<_Tp> __r(__x, -__y.imag());
|
||||
__r.real() -= __y.real();
|
||||
__r -= __y.real();
|
||||
return __r;
|
||||
}
|
||||
//@}
|
||||
|
31
libstdc++-v3/testsuite/26_numerics/complex/dr387_2.cc
Normal file
31
libstdc++-v3/testsuite/26_numerics/complex/dr387_2.cc
Normal file
@ -0,0 +1,31 @@
|
||||
// { dg-options "-std=gnu++0x" }
|
||||
// { dg-do compile }
|
||||
//
|
||||
// Copyright (C) 2009 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 2, 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 COPYING. If not, write to the Free
|
||||
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
// USA.
|
||||
|
||||
#include <complex>
|
||||
|
||||
// DR 387. std::complex over-encapsulated.
|
||||
// http://gcc.gnu.org/ml/gcc/2009-03/msg00264.html
|
||||
typedef std::complex<double> C;
|
||||
|
||||
C f1(C& c) { return c+1.0; }
|
||||
C f2(C& c) { return c-1.0; }
|
||||
C f3(C& c) { return 1.0+c; }
|
||||
C f4(C& c) { return 1.0-c; }
|
Loading…
Reference in New Issue
Block a user