This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]