для unique_ptr - это единственный способ не передать владение, для shared_ptr - экономия на доступе в метаинформации с счетчиком использования
Для юника - так себе способ, имхо. Лучше уж ссылку или указатель на хранимый им объект
отвязывание управляемого объекта от уника (оголение) - тоже опасная штука
Я вот тоже думаю, может лучше простой поинтер достать и передать, или разыменовать и по ссылке (что тоже самое почти)
Так какая в этом плане разница между Ty* и const unique_ptr<Ty>&?
подчеркивание того, что ресурс находится под управлением
Но ты платишь за это лишним индирекшином, верно?
на SO был хороший ответ на эту тему: https://stackoverflow.com/questions/8114276/how-do-i-pass-a-unique-ptr-argument-to-a-constructor-or-a-function
Помнится, ребята из Яндекса на Курсере советовали чуть иное :)
а тут от задачи зависит и от того какое владение нужно, если не ошибаюсь у Саттера был пост, когда лучше передавать сырой указатель, а не смарт птр, и прочие вариации на тему делегирования владения
std::experimental::observer_ptr ? Вообще, кто-то использует что-то кроме сырых указателей для невладеющих указателей?
Обсуждают сегодня