Добрый день! Кто может подробно объяснить происходящее в следующем коде? Я столкнулся в сегфолтом в недрах shared_ptr-а, и подозреваю следующий код в том, что он написан неправильно. Во-первых, я подозреваю, что нельзя кастить в rvalue содержимое shared_ptr, так как это может подменять память, на которую ссылается shared_ptr, и при обнулении счетчика ссылок будет вызван delete случайного куска памяти. Так ли это или я ошибаюсь?
Так же я считаю неправильным сохранение ссылки в классе T2 на объект T1 который мы передаём как rvalue, мне сложно обьяснить что произойдёт на самом деле, но это выглядит неправильно.
Надеюсь, кто-то сможет объяснить как будет работать следующий код, очень хочу разобраться
std::shared_ptr<T1> ptr = std::make_shared(new T1);
auto pResultElement = std::make_shared<T2>(std::move(*ptr));
class T2
{
public:
T2(const T1&& var):m_var(std::move(var)){}
private:
T1& var;
}