https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86954
Bug ID: 86954 Summary: redundant nothrow in call of ::operator delete Product: gcc Version: 8.1.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: frankhb1989 at gmail dot com Target Milestone: --- In the current implementation std::return_temporary_buffer, ::operator delete is called with std::nothrow as 2nd argument. (It seems here is the only occurrence of such ::operator delete call in libstdc++). This seems unintentional. Normally the std::nothrow argument should not exist here. This should make no difference to intentional behavior when the allocation and deallocation functions are not replaced due to the default behavior. However, since the nothrow_t overloads are called by implementation on exceptions during the call of operator new, and the overloads can be replaceable as per [new.delete.single], this may lead to surprise result with reasonable use, e.g. when user expect to have different log messages in different replaced overloads of ::operator delete.