Mar
Mar
возьми другую, их же две
Mar
vis.lem - валидная
Ioann_
10
##end
zhopa 12 43
one 10 0
two 10 1
three 20 2
##start
four 10 3
zhopa-four
one-two
two-three
three-four
zhopa-one
Ioann_
эта ?
Mar
да! не работает? у меня ок
Ioann_
Не работает ...
Mar
Я пофиксил по ходу.
Mar
Mar
Хотя теперь я удалил эту часть которую фиксил и все равно не сигфолтит) проверю диффы
Mar
тю. Странно, добавил только каллок
Mar
он зануливал, но до этого все было так же, непонятно, я залью изменения
Berkus
calloc = malloc+bzero
Mar
это я знаю, сам же писал (раньше)
Mar
я о том что до того я выделял статически, и дальше через bzero, проверял потом -- везде nil
Mar
потом сделал через каллок, и тройной массив (вуаля)
Ioann_
у меня вообще твой код много где падает
Ioann_
но мне нравится С, люблю его очень, очень - аж до слез :)
У меня кстати среднее количесвто наработанных часов в неделю обычно ~80
Ioann_
Ну последнее - это в общий чат
cyberzx 🇷🇺
что такое общий чат?
Mar
если ты клонил, то откатись до "Stable" версии)
Mar
(туточки)
Berkus
https://dl.dropboxusercontent.com/s/jpybez8xj24298m/2017-08-05%20at%2002.01.png смешные всё-таки названия
Vladislav
Yobibyte - sounds legit
Berkus
зебибись!
Vladislav
о, там есть approximate matching
Anonymous
А индукция?
Anonymous
Еп.
Anonymous
Я математик, я шарю. Че тут забыл? Хз ;D
Vladislav
https://github.com/facebookarchive/squangle
Polina
Вопрос возможно некорректный для этого чата, как списаться с тем человеком, который постит вакансии С++? Он не отвечает 😢😢
Berkus
Berkus
можете пока перепроверить текст вакансии, указали ли город, зарплатную вилку, вот это всё
Berkus
сэкономите изрядно времени себе и другим
Ioann_
Эй, мы уже разобрались, а ты снова в избушку тащишь ...
cyberzx 🇷🇺
Кстати, никогда не делайте мув, возвращая объект из функции по значению
cyberzx 🇷🇺
Это сразу сделает невозможным RVO
Ioann_
Не совсем верный совет. Все зависит от тех, кто код пишет. Если ты знаешь что возможномувнуть то можно мувнуть, но если знаешь что нет - то просто копируй
Vitaliy ◀️TriΔng3l▶️
Привет) А можете объяснить, почему иногда мув реализуют как обмен, а иногда - объект, из которого мувают, скажем так, обнуляют?
Vitaliy ◀️TriΔng3l▶️
И как его вообще надо использовать тогда?
Vitaliy ◀️TriΔng3l▶️
Просто в моём представлении после move должен оставаться один объект, с которым можно адекватно работать, который может иметь какие-то ресурсы, а не два, в отличие от копирования
Arseny
В stl состояние объекта после move из него обычно не определено. Кроме нескольких исключений вроде unique_ptr.
Мне тоже кажется, что это неудобно и в своих классах я всегда стараюсь гарантировать, чтобы move обнулял объект.
Vitaliy ◀️TriΔng3l▶️
Anonymous
Vitaliy ◀️TriΔng3l▶️
После move вроде надо ~ делать же?
Arseny
Vitaliy ◀️TriΔng3l▶️
А
Vitaliy ◀️TriΔng3l▶️
Это в случае, если ты placement new используешь
Vitaliy ◀️TriΔng3l▶️
Например, при раздвигании самодельного вектора, тогда ~
Vitaliy ◀️TriΔng3l▶️
Запутался совсем
Arseny
Я тоже. При чем тут деструктор?
Vitaliy ◀️TriΔng3l▶️
В общем, какую-то дичь несу. move на владение объектами и на, скажем так, сконструированность, никак не влияет же. Просто в моём конкретном случае, когда move использовал (реализация вектора), так надо было.
cyberzx 🇷🇺
http://en.cppreference.com/w/cpp/language/copy_elision
Ioann_
Я про это и говорю
Ioann_
Но это не означает что мув использовать не стоит.
Ioann_
Copy elision или мув решает тот кто код пишет. Если я знаю что можно на изи мувнуть объект то и копи элижн мне не нужны, нет ?
Vitaliy ◀️TriΔng3l▶️
Стоит для более-менее крупных объектов, которые запрашивают какие-то внешние ресурсы (динамически выделяют память, например)
cyberzx 🇷🇺
Это гарантированная песимизация
Vitaliy ◀️TriΔng3l▶️
А то вдруг конструктор по умолчанию выделит что-нибудь
Vitaliy ◀️TriΔng3l▶️
И ты тут же это освободишь
Vitaliy ◀️TriΔng3l▶️
Или вы про какие случаи?
Ioann_
И не понимаю почему всякие там рво и их отсутствие сразу песимизация ?
Arseny
Если возвращается локальная переменная, то в return std::move не нужен.
Vitaliy ◀️TriΔng3l▶️
Ну я бы всё равно явно предпочёл выражать свои намерения
Arseny
Потому что без std::move может быть copy elision, а с std::move - нет.
Vitaliy ◀️TriΔng3l▶️
Ааа
Arseny
При этом move конструктор может вызваться в обоих случаях
cyberzx 🇷🇺
Ioann_
Я не очень понимаю логики. Объясните плиз
Ioann_
Почему если я возвращаю string
Ioann_
То мне не стоит делать std move f() ?
Arseny
Потому что без move будет не хуже, а возможно лучше
Arseny
Правда это все верно только если тип возвращаемого значения совпадает с типом возвращаемого значения функции.
std::optional<std::vector<int>> f() { std::vector<int> x; ...; return std::move(x);}
Вот тут move уже полезен.
Ioann_
Вот я знаю, что у строки есть move. Может и будет лучше, соглашусь. Но что на счет того, что у нас может и не вызваться ce ?
Ioann_
То есть есть ли гарантии того, что все будет имеено так как вы говорите, а не как обычно ?
cyberzx 🇷🇺
https://stackoverflow.com/a/14856553