http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54388
--- Comment #4 from Daniel Krügler <daniel.kruegler at googlemail dot com>
2012-08-28 13:53:18 UTC ---
(In reply to comment #3)
> (In reply to comment #2)
> > The fix is to remove the constexpr from array::at, which isn't required by
> > the
> > standard anyway:
>
> It's not required, but I would like to encourage you to keep it if possible,
> because otherwise it would like as if the constexpr extension paper
Please read that as: "it would *look* like"
> Replace
>
> return __n < _Nm ?
> _M_instance[__n] : throw out_of_range(__N("array::at"));
>
> by
>
> return __n < _Nm ? 0 : throw out_of_range(__N("array::at")),
> _M_instance[__n];
Alternatively prevent any value evaluation at all:
return __n < _Nm ? void() : throw out_of_range(__N("array::at")),
_M_instance[__n];