https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89303

--- Comment #6 from Alexandre Duret-Lutz <adl at gnu dot org> ---
I mentioned in my first comment that I had also cases that threw bad_weak_ptr.
I've been able to reproduce those as follows:

% cat badwptr.cc
#include <memory>

class blob final: public std::enable_shared_from_this<blob>
{
};

int main()
{
  std::shared_ptr<blob> tg = std::make_shared<blob>();
  return tg->shared_from_this().use_count();
}

% g++ -g -O badwptr.cc
% ./a.out
terminate called after throwing an instance of 'std::bad_weak_ptr'
  what():  bad_weak_ptr

When compiled with -O2 or -O0, the program exits with $?=2 as expected.

Reply via email to