http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54388
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-08-28 08:21:21 UTC --- The fix is to remove the constexpr from array::at, which isn't required by the standard anyway: diff --git a/libstdc++-v3/include/std/array b/libstdc++-v3/include/std/array index 58263ce..88595c0 100644 --- a/libstdc++-v3/include/std/array +++ b/libstdc++-v3/include/std/array @@ -164,14 +164,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return _M_instance[__n]; } -#ifdef __EXCEPTIONS - constexpr const_reference - at(size_type __n) const - { - return __n < _Nm ? - _M_instance[__n] : throw out_of_range(__N("array::at")); - } -#else const_reference at(size_type __n) const { @@ -179,7 +171,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION std::__throw_out_of_range(__N("array::at")); return _M_instance[__n]; } -#endif reference front()