std :: enable_shared_from_this: Darf shared_from_this () im Destruktor aufgerufen werden?

#include <memory>
#include <iostream>

struct A : public std::enable_shared_from_this<A>
{
    ~A()
    {
        auto this_ptr = shared_from_this(); // std::bad_weak_ptr exception here. 
        std::cout << "this: " << this_ptr;
    }
};

int main()
{
    auto a = std::make_shared<A>();
    a.reset();
    return 0;
}

Ich erhaltestd::bad_weak_ptr Ausnahme beim Aufruf vonshared_from_this(). Ist es beabsichtigt? Ja, es könnte gefährlich sein, da dieser Zeiger nicht verwendet werden kann, nachdem der Destruktor zurückgekehrt ist, aber ich sehe keinen Grund, warum es technisch unmöglich wäre, den Zeiger hier abzurufen, da das gemeinsam genutzte Zeigerobjekt offensichtlich noch vorhanden ist und vorhanden sein kann benutzt. Gibt es eine Möglichkeit, dies zu umgehen, abgesehen davon, mein eigenes @ zu schreibeenable_shared_from_thisanalog (was würde ich lieber nicht machen)?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage