https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103984
--- Comment #8 from Martin Liška <marxin at gcc dot gnu.org> --- Note I have a different test-case from benchmark package that show the same: $ cat benchmark.ii namespace std { inline namespace __cxx11 {} struct __new_allocator { void deallocate(char *, long) { operator delete(0); } }; template <typename> using __allocator_base = __new_allocator; template <typename> struct allocator_traits; template <typename> struct allocator : __allocator_base<int> {}; template <typename _Tp> struct allocator_traits<allocator<_Tp>> { using allocator_type = allocator<_Tp>; using pointer = _Tp *; using size_type = long; static void deallocate(allocator_type __a, pointer __p, size_type __n) { __a.deallocate(__p, __n); } }; } // namespace std struct __alloc_traits : std::allocator_traits<std::allocator<char>> {}; namespace std { template <class> struct initializer_list { int *_M_array; unsigned long _M_len; }; namespace __cxx11 { struct basic_string { struct _Alloc_hider : allocator_traits<allocator<char>> { pointer _M_p; } _M_dataplus; basic_string(const char *, const allocator<char> & = allocator<char>()); ~basic_string() { if (_M_dataplus._M_p) { allocator<char> __trans_tmp_1; __alloc_traits::deallocate(__trans_tmp_1, 0, 1); } } }; } // namespace __cxx11 } // namespace std struct TestCase { std::basic_string name; bool error_occurred; std::basic_string error_message; }; int AddCases(std::initializer_list<TestCase>); int dummy68 = AddCases({{"", true, ""}});