LINUX.ORG.RU

История изменений

Исправление vertexua, (текущая версия) :

Это чистый шаблон, который при дефолтном делетере должен полностью в генерируемом коде ничем не отличаться от обычного указателя. С другой стороны 1) Ссылка на указатель остается в одном месте. Стоит его передать в другую функцию, так в изначальной функции он пропадает, становится невалидным, символизируя передачу ownership на указатель. 2) Сам unique_ptr передается по значению без проблем, так как инкапсулирует указатель. Как только выполнится последняя функция, которая не передала указатель дальше - он будет удален автоматически. Вызов delete проставит статически в нужном месте компилятор.

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

Дискач в треде заключался в том, действительно ли unique_ptr вытрется полностью при дефолтном делетере, как и было задумано когда их делали

Исходная версия vertexua, :

Это чистый шаблон, который при дефолтном делетере должен полностью в генерируемом коде ничем не отличаться от обычного указателя. С другой стороны 1) Ссылка на указатель остается в одном месте. Стоит его передать в другую функцию, так в изначальной функции он пропадает, становится невалидным, символизируя передачу ownership на указатель. 2) Сам unique_ptr передается по значению без проблем, так как инкапсулирует указатель. Как только выполнится последняя функция, которая не передала указатель дальше - он будет удален автоматически. Вызов delete проставит статически в нужном месте компилятор.

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