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

--- Comment #6 from Marc Glisse <marc.glisse at normalesup dot org> 2011-11-08 
07:44:27 UTC ---
(In reply to comment #4)
> I'm sorry, I misunderstood you, you meant C++11 does not mandate the constexpr
> in the primary. Actually, I guess it doesn't hurt,

I agree, it was your expression "per the letter" that confused me, but I am
fine with the code.

(In reply to comment #5)
> Hmm, I think adding the overloads would interfere with usage of complex
> temporaries in a constant expression.

Really ? std::bitset seems to have this kind of overload for operator[].
Surprisingly, it is the only type that does, most only have a constexpr
constructor, so I am not sure if there is a bug in bitset, a missing feature
elsewhere, or if the situations are different.

Actually, it seems that with 4.7,libstdc++ provides a constexpr overload for
array::operator[] as an extension, which seems to answer the question.

Or do you mean that the following would cause trouble (which seems likely, but
I don't have any compiler at hand that supports both constexpr and *this
references)?
constexpr _Tp real()const&;
_Tp&real()&;
_Tp real()&&;

Reply via email to