170 похожих чатов

Есть ли смысл передавать умные указатели по константной ссылке?

13 ответов

29 просмотров

для unique_ptr - это единственный способ не передать владение, для shared_ptr - экономия на доступе в метаинформации с счетчиком использования

Anatoly Shirokov
для unique_ptr - это единственный способ не переда...

Для юника - так себе способ, имхо. Лучше уж ссылку или указатель на хранимый им объект

Dmitriy [Отпуск]
Для юника - так себе способ, имхо. Лучше уж ссылку...

отвязывание управляемого объекта от уника (оголение) - тоже опасная штука

Aleksei-Budyakov Автор вопроса
Dmitriy [Отпуск]
Для юника - так себе способ, имхо. Лучше уж ссылку...

Я вот тоже думаю, может лучше простой поинтер достать и передать, или разыменовать и по ссылке (что тоже самое почти)

Anatoly Shirokov
отвязывание управляемого объекта от уника (оголени...

Так какая в этом плане разница между Ty* и const unique_ptr<Ty>&?

Dmitriy [Отпуск]
Так какая в этом плане разница между Ty* и const u...

подчеркивание того, что ресурс находится под управлением

Aleksei-Budyakov Автор вопроса
Anatoly Shirokov
подчеркивание того, что ресурс находится под управ...

Но ты платишь за это лишним индирекшином, верно?

Dmitriy [Отпуск]
Для юника - так себе способ, имхо. Лучше уж ссылку...

на SO был хороший ответ на эту тему: https://stackoverflow.com/questions/8114276/how-do-i-pass-a-unique-ptr-argument-to-a-constructor-or-a-function

Kirill
на SO был хороший ответ на эту тему: https://stac...

Помнится, ребята из Яндекса на Курсере советовали чуть иное :)

Dmitriy [Отпуск]
Помнится, ребята из Яндекса на Курсере советовали ...

а тут от задачи зависит и от того какое владение нужно, если не ошибаюсь у Саттера был пост, когда лучше передавать сырой указатель, а не смарт птр, и прочие вариации на тему делегирования владения

Kirill
а тут от задачи зависит и от того какое владение н...

std::experimental::observer_ptr ? Вообще, кто-то использует что-то кроме сырых указателей для невладеющих указателей?

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта