https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102988
--- Comment #1 from David Binderman <dcb314 at hotmail dot com> --- Reduced C++ code is: inline namespace __cxx11 {} template <typename _Tp> _Tp *__addressof(_Tp); namespace __cxx11 { class basic_string { void _M_set_length(); public: ~basic_string(); void operator=(basic_string __str) { if (this != __addressof(__str)) _M_set_length(); } }; } // namespace __cxx11 class vector { public: basic_string operator[](long); }; class PersistException {}; class PersistEngine { const basic_string readClass() throw(PersistException); vector myClassVector; }; const basic_string PersistEngine::readClass() throw(PersistException) { basic_string className; className = myClassVector[0]; return className; }