да весь этот мозголом придуман чтобы избежать утечек памяти. умные
люди советуют не использовать указателей вообще. только смарт
поинтер и ссылки. умело оперировать переносом и избегать undefined behavior и будет счастье.
например в данном случае :
const std::shared_ptr<class Test>& getLast()
{
const std::shared_ptr<class Test> rc{std::move(q.front())};
std::cout << "getLast1: use_count=" << rc.use_count() << std::endl;
q.pop();
std::cout << "getLast2: use_count=" << rc.use_count() << std::endl;
return rc;
}
операция по затратам такаяже как на указателях.