Здравствуйте, szag, Вы писали:
S>ИМХО, тут все точно так же как и при обычном наследовании и использовании указателя на базовый класс — нужен виртуальный деструктор, а иначе UB. Сам по себе enable_shared_from_this не делает виртуальных деструкторов.
ну почему же
здесь вполне может быть все интереснее
struct user_context: session {};
shared_ptr<session> p(new user_context()); // deleter is captured here, he knows real type is user_context
мы ведь помним, что shared_from_this() работает только после того, как объект уже положили в некоторый shared_ptr и там же уже сидит некоторый deleter. если deleter не приводит к UB, то все окей
вопрос (или ответ) в целом никак не связан с наследованием от std::enable_shared_from_this