Ioann_
Ioann_
А вот все что не указатель - так и будет копироваться, вроде
Ivan
Ioann_
Точно. При перемещении - т.е если реализованы конструкторы перемещения и операторы перемещения
Ivan
В самих конструкторах надо занулять ?
Ioann_
Ну да, если свой пишешь объект
Ivan
Ну это понятно. Он просто поменял один адрес на другой?
Ioann_
Да, но данные на которые он указывает никто не удалял
Ivan
А какой смысл от этого?
Ivan
Зачем менять указатель
Ivan
Ради чего всё
Ioann_
Ну тюобычно данные копиреются
Ioann_
Так ты просто приравнивание указателя делаешь
Ivan
Нет, обычно передается указатель на данные
Ioann_
А при копировании создаешь еще один участок памяти с повтором
Ioann_
Куда передается ?
Ivan
Туда же куда копируется и мувится
Mar
нет, тот же сигфолт
Ioann_
Кидай код на гитхаб
Ioann_
Я ща его отлажу
Ioann_
Быриком
Ivan
Можешь на старом с++ проверить
Ivan
Так ладно. Return value optimization?
Ioann_
Да
Ivan
Ты уверен?
Ioann_
Нет.
Ivan
)))))
Ioann_
Тут не rvo. Тут будет вызван обычный def xonstructor
Ivan
Слово return тебя не смущает?)
Ioann_
И объект будет копирующим оператором присваивания
Ivan
Проверь годболтом тут не будет копирования
Ioann_
Ну там могут быть какие либо оптимизации. Ты действительно на годболте смотришь ? На старой версии компиля ?
Mar
https://bitbucket.org/theforcebemay/lem-in
Ivan
Ну, я действительно смотрел это
Ioann_
Так у тебя скорее всего компиль выполнил оптимизацию
Ivan
Я про это и говорю
Ioann_
он увидел, что объект создается и сразу приравнивается
Ioann_
так это и есть, что-то по типа RVO
Ivan
А бывает иначе)?
Ioann_
там же временный объект создается
Ivan
Ну не создаётся временный
Ioann_
ну, он увидел что можно спотимайзить и сделал это
Ivan
Компилятор сделает вот так: А а{};
Ivan
Так. Внимание. Тогда когда нужен мув?
Ioann_
так блин, rvo - это тебе не стандарт, как и оптимизации компиля
Ioann_
а move - это гарантия
Ivan
Стандарт разрешает делать такую оптимизацию
Ivan
В любом случае можно написать А а; Когда нужен мув?
Ioann_
например, при том же возвращении из функции
Ivan
Можно сделать inline
Ioann_
Можно сделать inline
ты не можешь инлайнить разные функции, то есть можешь, но они не будут заинлайнены
Ioann_
Ну то есть не все
Ivan
Разные?)
Ivan
Я кажется начал вспоминать зачем нужен мув
Ioann_
Ioann_
А мув дает гарантию, что любой объект что имеет соотв. конструкторы и прочее - будет легковесно перемещен
Ivan
Я вспомнил
Ivan
Спасибо
Ioann_
Богдан, тут ?
Mar
Да, я тут
Ioann_
Какие данные ты вводишь ?
Mar
Всерьез пересматриваю свой код)
Mar
с папки maps
Ioann_
возможно, bzero
Mar
./a.out < maps/vis.lem
Ioann_
что-то не так делает
Mar
сделал
Berkus
Mar
Раскоменть принтф в take_path, посмотри какое решение находит и записывает)
Mar
Bzero я проверял, все гуд, нулит
Mar
То что записывает дичь, это одно, но не пойму почему сигфолтит, выделяет памяти то достаточно
Berkus
проверяй в дебагере значения
Anonymous
дядя богдан
Ioann_
нормально ли, что функция get validate rooms
Ioann_
всегда бросает error ?
Ioann_
ну то есть не всегда, но у меня падает именно там
Mar
Там одна мапа невалидная