Size: a a a

2020 May 01

MM

Medved Medvedievich in pro.cxx
Dmytro Khimchenko
Всем привет) я новичок в плюсах, хочу посмотреть как работают с с++ программисты-практики)
@supapro канал для новичков, здесь только сложные вопросы.
источник

DK

Dmytro Khimchenko in pro.cxx
Понял, спасибо
источник

ПК

Побитый Кирпич... in pro.cxx
@himchenhim тебе не обязательно было отсюда ливать
источник

MM

Mikhail Matrosov in pro.cxx
Igor Akhmetov
https://youtu.be/rHIkrotSwcc?t=1074 Если вкратце то 1) exception handling и 2) из-за ABI unique_ptr<int> соответствует int** а не int*, из-за чего приходится делать лишнее разыменование.
так. признаю, мне немного вынесла мозг вот эта часть https://youtu.be/rHIkrotSwcc?t=1541 :
"we pass unique_ptr by value, and we expect someone to move from it. but if the move does not happen, then we have to clean up"
как это возможно?.. я переместил свой юникптр в параметр функции. мой юникптр точно останется пустым. а что там будет происходить с параметром функции мне уже не очень важно - она сама разберётся. и почистит, если надо. как такое может быть, что мне самому придётся чистить?..
источник

A

Alex in pro.cxx
тоже этого не понял (но в целом доклад крутой)
источник

A

Alex in pro.cxx
нельзя не сделать мув, поскольку все остальные действия запрещены
источник

v

vehlwn in pro.cxx
Mikhail Matrosov
так. признаю, мне немного вынесла мозг вот эта часть https://youtu.be/rHIkrotSwcc?t=1541 :
"we pass unique_ptr by value, and we expect someone to move from it. but if the move does not happen, then we have to clean up"
как это возможно?.. я переместил свой юникптр в параметр функции. мой юникптр точно останется пустым. а что там будет происходить с параметром функции мне уже не очень важно - она сама разберётся. и почистит, если надо. как такое может быть, что мне самому придётся чистить?..
and this is cleaning up the memory... the destructor of unique pointer
[показывает на operator delete(void*)]
источник

A

Alex in pro.cxx
он имеет в виду вызов деструктора для by value параметра внутри функции
источник

MM

Mikhail Matrosov in pro.cxx
Alex
он имеет в виду вызов деструктора для by value параметра внутри функции
да. внутри вызывающей функции
источник

A

Alex in pro.cxx
я не догоняю в целом его пойнт, в чём проблема-то, где-то же должен быть вызван деструктор
источник

v

vehlwn in pro.cxx
Alex
я не догоняю в целом его пойнт, в чём проблема-то, где-то же должен быть вызван деструктор
Вроде проблема в передаче через стек или регистр. Ему не нравится двойное разыменование, чтоб достать объект.
источник

A

Alex in pro.cxx
но конкретно с деструктором что не так?
источник

v

vehlwn in pro.cxx
Alex
но конкретно с деструктором что не так?
Ничего.
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Mikhail Matrosov
так. признаю, мне немного вынесла мозг вот эта часть https://youtu.be/rHIkrotSwcc?t=1541 :
"we pass unique_ptr by value, and we expect someone to move from it. but if the move does not happen, then we have to clean up"
как это возможно?.. я переместил свой юникптр в параметр функции. мой юникптр точно останется пустым. а что там будет происходить с параметром функции мне уже не очень важно - она сама разберётся. и почистит, если надо. как такое может быть, что мне самому придётся чистить?..
Скорее всего имеется в виду условный вызов delete в дторе
источник

MM

Mikhail Matrosov in pro.cxx
Artöm Bakri Al-Sarmini
Скорее всего имеется в виду условный вызов delete в дторе
мм. ок. хорошее наблюдение. это объясняет наличие проверки. но всё равно неясно, откуда берётся двойная индирекция. я кстати ожидал бы, что там какая-то фишка, которая и мешает компилятору понять, что мы переместили из объекта (занулили указатель) и проверять ничего не надо
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Двойная индерекция при передаче по ссылке
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
По значению его что-то другое не устроило
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Или он аргументировал, почему хочет передавать по ссылке, не помню
источник

v

vehlwn in pro.cxx
Mikhail Matrosov
мм. ок. хорошее наблюдение. это объясняет наличие проверки. но всё равно неясно, откуда берётся двойная индирекция. я кстати ожидал бы, что там какая-то фишка, которая и мешает компилятору понять, что мы переместили из объекта (занулили указатель) и проверять ничего не надо
В смысле условный delete? Он по стандарту обязан ничего не делать, если получил nullptr.
источник

CD

Constantine Drozdov in pro.cxx
выглядит будто компилятор ниасилил доказать, что unique_ptr после перемещения 0
источник