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.

Reply via email to