Andrey
а еще туплы ввели!
жили без туплов же как-то
Stanislav
жили без туплов же как-то
ну в с++11 ввели, а тут 2016 )
Stanislav
я пару раз даже юзал их в С++
Stanislav
со structured bindings ваще огонь будет
Max
я пару раз даже юзал их в С++
Чисто чтоб поюзать или реально выгода была?
babysitter
std::tie такой офигенный
Stanislav
Чисто чтоб поюзать или реально выгода была?
ну, не хотелось структуру городить
Max
А, ну эт да ))))
babysitter
вот знаете в питоне можно a, b = b,a обмен переменных местами. так это же мы тоже теперь можем. первое о чем я подумал, когда мне рассказали про std::tie
babysitter
tie(a, b) = make_pair(b, a);
Stanislav
С++17
Stanislav
struct { int a, b; } MyStruct foo() { return MyStruct(); } auto [a,b] = foo();
Cinder
Pattern matching порадовал и свитчи по объектам
Я джва года ждал такого C#. А че там ещё? Список фич какой? Может они просто не знают, где взять F#?
Крылатый
structured bindings :)
Не сработает... http://melpon.org/wandbox/permlink/rFxccAO9Z9KOBVUz
Stanislav
Не сработает... http://melpon.org/wandbox/permlink/rFxccAO9Z9KOBVUz
оно еще в шланге частично реализовано
Крылатый
Не, оно просто создаёт новые переменные жеж.
Cinder
tie(a, b) = make_pair(b, a);
Ни нужно, только так: tie(a,b) = {a,b}; Правда вроде ещё в стандарт до конца не завезли, но обещали
Stanislav
зато можно будет делать for( auto [key,value]: myUberMap) {}
babysitter
вроде прямо в tie можно будет объявить переменную
Крылатый
Ох лол http://melpon.org/wandbox/permlink/SuwynAi7QoDzIZIV
Cinder
> Можно отделять нули произвольным количеством подчёркиваний.
Cinder
https://habrastorage.org/files/a77/e84/e79/a77e84e79abb41519d562463aede361b.png
Крылатый
Короче, не работает оно)
Cinder
> Локальные функции > Более или менее нормальные кортежи Ну реально F# завозят.
Cinder
> Можно давать названия каждой переменной У них же есть анонимные типы уже, зачем городить новую близкую сущность? Похоже через них и реализовано, просто с другим синтаксисом
Cinder
https://habrastorage.org/files/a81/00f/f3e/a8100ff3e66345ea8949f5ef1535523b.png
Cinder
Эх, да тут другой свитчп по объектам, более контуженный, даже не знаю нужно ли:
Cinder
https://habrastorage.org/files/e45/dbb/7ed/e45dbb7ed055493da21f50f8f67a6cc8.png
Cinder
> Автоматическое создание простых классов с необходимыми полями.
Cinder
https://habrastorage.org/files/769/dc1/057/769dc1057d634d40b5a251494ef687b7.png
Cinder
> Создание неизменяемых объектов
Cinder
https://habrastorage.org/files/7c6/3a2/0e8/7c63a20e81ca42478293df15638506e5.png
Cinder
Ну точно F# завозят, но что-то как-то чужеродно и сыро смотрится
Daniil
> зашел в чат по крестам > F# C#
babysitter
имеется в виду std::tie(a, b) = std::tie(b, a); ?
Vladislav
UB же
а вот так - работает: std::tie(a, b) = std::make_pair(b, a);
babysitter
это да
babysitter
вот знаете в питоне можно a, b = b,a обмен переменных местами. так это же мы тоже теперь можем. первое о чем я подумал, когда мне рассказали про std::tie
babysitter
tie(a, b) = make_pair(b, a);
Vladislav
правда я теперь не понимаю, должен ли быть UB в исходном варианте
Aidar
Ну и мы типа скопировали лишний раз
Aidar
Тогда еще и move надо
Aidar
И строка оказывается перегруженной
Vladislav
нда
Stanislav
быстрый опрос)
Stanislav
-2 битовом представлении
babysitter
все единицы последняя ноль
babysitter
но навскидку не уверен
babysitter
не, вот и сел в лужу :)
Vladislav
кстати, малоизвестная фишка с std::tie: std::tie(std::ignore, a) = make_pair(1, 2);
babysitter
а, сел в лужу поспешив сказать, что сел в лужу
Stanislav
правильный ответ "идите в хуй, в вопросе про процессор ничего не сказано"
Stanislav
а для х86 правильный ответ
Vladislav
правильный ответ "идите в хуй, в вопросе про процессор ничего не сказано"
а бывают современные процессоры, не использующие 2-complement?
Stanislav
но если придерживаться стандартов то какое то такое
Vladislav
просто в ней арифметические операции для signed типов идентичны операциям для unsigned (кроме деления)
Vladislav
поэтому логично ее использовать)
Vladislav
это я про теорию)
Stanislav
😞 про теорию это не ко мне
Vladislav
что в signed, что в unsigned, {+, -, *} работаю как бы по модулю 2^bits, просто unsigned интерпретируют числа >=2^(bits-1) как соответствующие отрицательные
Stanislav
ахах, чето вспомнил одну фигню завязанную на signed int
Vladislav
они скорее всего разные флаги переполнения выставляют просто)
Stanislav
аллоды 2, у них в дата файлах был флоат модифайер для цен, и базовая цена
Stanislav
стоило флоатик сделать в -
Stanislav
и продавец мало того что тебе шмотку самую дорогую отдовал, а еще и денег отсыпал за это
Stanislav
они скорее всего разные флаги переполнения выставляют просто)
вот не помню да, асм это что то такое далекое)
Vadim
напомните что означают двоеточия перед google ? const ::google::protobuf
Крылатый
неймспейс же
babysitter
все пишут
Vladislav
абсолютный, а не относительный, путь
babysitter
глобал неймспейс