std :: enable_shared_from_this: ¿está permitido llamar a shared_from_this () en destructor?

#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;
}

Me estoy poniendostd::bad_weak_ptr excepción al llamarshared_from_this(). ¿Es por diseño? Sí, puede ser peligroso ya que este puntero no se puede usar después de que el destructor regrese, pero no veo una razón por la cual sería técnicamente imposible obtener el puntero aquí, ya que el objeto puntero compartido obviamente todavía existe y puede ser usado. ¿Hay alguna forma de eludir esto, salvo escribir el mío?enable_shared_from_this analógico (que preferiría no hacer)

Respuestas a la pregunta(4)

Su respuesta a la pregunta