Я пытаюсь обернуть голову вокруг новых идиом для С++ 11.
Похоже, что с shared_ptr, по крайней мере, существует существенное различие между использованием new T()
и make_shared<T>()
.
Но как сбросить общий указатель, чтобы указать на какой-то новый экземпляр. Раньше я обычно использовал член reset(new T())
. Однако разве это не связано с той же проблемой, что и при использовании make_shared()? (т.е. он не позволяет make_shared выделять объект, поэтому он вынужден помещать счетчик ref в отдельном распределении вместо того же самого распределения, что и сам T)
Лучше ли вам лучше использовать:
mysharedptr = make_shared<T>(args...);
Или есть лучший способ?
И не должен reset предлагать переменную пересылку аргументов как make_shared, так что можно было бы написать mysharedptr.reset(args...);?