This is the mail archive of the gcc-bugs@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]

[Bug libstdc++/51013] complex::{imag,real}() should maintain lvalue-returning extension in C++11


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51013

Marc Glisse <marc.glisse at normalesup dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |marc.glisse at normalesup
                   |                            |dot org

--- Comment #2 from Marc Glisse <marc.glisse at normalesup dot org> 2011-11-07 23:42:46 UTC ---
(In reply to comment #1)
> I did *not* *remove* anything, simply, for C++11, real() and imag() are exactly
> *per the letter* of the Standard, that is (similarly for the specializations):
> 
>       constexpr _Tp 
>       real() const { return _M_real; }

Isn't the const redundant here?
Actually, I only see constexpr for the specializations in the standard, not for
the general case, am I looking at the wrong place?

>       constexpr _Tp 
>       imag() const { return _M_imag; }
> 
> and I don't see why we should do something different. But, if Gaby thinks,
> everything considered, that we want something different, I'm not going to
> object to patches to that effect (from a technical point of view, note the
> functions are now constexpr, thus you can't simply have two overloads anymore)

Why can't you still have these overloads?
constexpr _Tp real(); // const
_Tp&real();

Note that I am not taking position on whether it should be added, I am just
confused by the technical reasons.


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