http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54388
--- Comment #6 from Daniel Krügler <daniel.kruegler at googlemail dot com> 2012-08-28 14:07:11 UTC --- (In reply to comment #5) > The paper does have implementation experience, and experience shows we got it > wrong ;) We implemented it wrong is a different message than "we couldn't implement it" > We could do: > > return __n < _Nm ? _M_instance[__n] > : (std::__throw out_of_range(__N("array::at")), _M_instance[0]); > > and still get rid of the code that's conditionally compiled on __EXCEPTIONS. > > N.B. the second branch uses _M_instance[0] to avoid possible warnings about > out-of-bounds accesses. Yes, this should also work (I noticed that gcc gets an ICE in any of my suggested forms. I will investigate this separately)