This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
[c++0x] DR 387 implementation in <complex> incomplete.
- From: Jan van Dijk <jan at epgmod dot phys dot tue dot nl>
- To: gcc at gcc dot gnu dot org
- Date: Tue, 10 Mar 2009 21:36:12 +0100
- Subject: [c++0x] DR 387 implementation in <complex> incomplete.
Hello,
It seems that the implementation of DR 387 in trunk's <complex> is incomplete:
both versions of operator+,-(const _Tp&) still assume real() is an lvalue (see
below). These are the only offenders , AFAICS.
Is somebody on this, or should I file a PR?
Regards, Jan.
The program:
#include <complex>
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; }
$ g++ -std=c++0x -c t.cpp
In file included from t.cpp:1:
/home/jan/local/gcc-head/lib/gcc/x86_64-unknown-linux-gnu/4.4.0/../../../../include/c++/4.4.0/complex:
In function âstd::complex<_Tp> std::operator+(const std::complex<_Tp>&, const
_Tp&) [with _Tp = double]â:
t.cpp:3: instantiated from here
/home/jan/local/gcc-head/lib/gcc/x86_64-unknown-linux-gnu/4.4.0/../../../../include/c++/4.4.0/complex:336:
error: lvalue required as left operand of assignment
/home/jan/local/gcc-head/lib/gcc/x86_64-unknown-linux-gnu/4.4.0/../../../../include/c++/4.4.0/complex:
In function âstd::complex<_Tp> std::operator-(const std::complex<_Tp>&, const
_Tp&) [with _Tp = double]â:
t.cpp:4: instantiated from here
/home/jan/local/gcc-head/lib/gcc/x86_64-unknown-linux-gnu/4.4.0/../../../../include/c++/4.4.0/complex:366:
error: lvalue required as left operand of assignment
/home/jan/local/gcc-head/lib/gcc/x86_64-unknown-linux-gnu/4.4.0/../../../../include/c++/4.4.0/complex:
In function âstd::complex<_Tp> std::operator+(const _Tp&, const
std::complex<_Tp>&) [with _Tp = double]â:
t.cpp:5: instantiated from here
/home/jan/local/gcc-head/lib/gcc/x86_64-unknown-linux-gnu/4.4.0/../../../../include/c++/4.4.0/complex:345:
error: lvalue required as left operand of assignment
/home/jan/local/gcc-head/lib/gcc/x86_64-unknown-linux-gnu/4.4.0/../../../../include/c++/4.4.0/complex:
In function âstd::complex<_Tp> std::operator-(const _Tp&, const
std::complex<_Tp>&) [with _Tp = double]â:
t.cpp:6: instantiated from here
/home/jan/local/gcc-head/lib/gcc/x86_64-unknown-linux-gnu/4.4.0/../../../../include/c++/4.4.0/complex:375:
error: lvalue required as left operand of assignment