Size: a a a

Compiler Development

2020 January 17

M

MaxGraey in Compiler Development
Ну в Rust итератор цикла тоже инферится как i32
источник

AS

Aleksey Shipilev in Compiler Development
А никуда ещё в С++ не завезли range-ей? Был бы range, наверняка выжило бы и со знаковым интом. А то ведь понятно, что условие продолжения цикла всегда верно :)
источник

M

MaxGraey in Compiler Development
MaxGraey
Ну в Rust итератор цикла тоже инферится как i32
вот простое доказательство:
https://godbolt.org/z/887Yeu

тот же результат
источник

E

EgorBo in Compiler Development
MaxGraey
Что весьма интерестно в данном случае C++ и Rust выводят разные результаты:
https://godbolt.org/z/79LKrX

С++ - бесконечный цикл
Rust  - возврящает «1»
Sounds like Rust propoganda
источник

A

Alex Ф-ф-фэils!🌠︙ in Compiler Development
Aleksey Shipilev
А никуда ещё в С++ не завезли range-ей? Был бы range, наверняка выжило бы и со знаковым интом. А то ведь понятно, что условие продолжения цикла всегда верно :)
давно уже есть std::ranges api (года полтора)
источник

M

MaxGraey in Compiler Development
EgorBo
Sounds like Rust propoganda
Как то само так выходит. Я бы непрочь найти где Rust факапит, но почему то все выходит все с точностью да наоборот
источник

A

Alex Ф-ф-фэils!🌠︙ in Compiler Development
MaxGraey
Как то само так выходит. Я бы непрочь найти где Rust факапит, но почему то все выходит все с точностью да наоборот
источник

A

Alex Ф-ф-фэils!🌠︙ in Compiler Development
Aleksey Shipilev
"Немножко жаль", что auto инферрит обычный int, судя по всему.
там потому что в C/C++ же обычная циферка без суффикса это int да
источник

A

Alex Ф-ф-фэils!🌠︙ in Compiler Development
можно сделать auto i = 0ul например
источник

M

MaxGraey in Compiler Development
0ul это уже будет unsigned long
источник

AS

Aleksey Shipilev in Compiler Development
Alex Ф-ф-фэils!🌠︙
давно уже есть std::ranges api (года полтора)
Эм. Не похоже на то, что я имел в виду. Как написать что-то вида "for (i in [1..20])"?
источник

E

EgorBo in Compiler Development
MaxGraey
0ul это уже будет unsigned long
long же
источник

A

Alex Ф-ф-фэils!🌠︙ in Compiler Development
MaxGraey
0ul это уже будет unsigned long
да, я по инерции уже;
источник

M

MaxGraey in Compiler Development
Пример чуть сложнее. И уже все ок
https://godbolt.org/z/5Fa9UL
источник

E

EgorBo in Compiler Development
Aleksey Shipilev
Эм. Не похоже на то, что я имел в виду. Как написать что-то вида "for (i in [1..20])"?
судя по всему в С++ 20 с ренджами это будет что-то типа ranges::range(0, 10) а не питон-лайк синтаксис как ты хочешь
источник

A

Alex Ф-ф-фэils!🌠︙ in Compiler Development
EgorBo
судя по всему в С++ 20 с ренджами это будет что-то типа ranges::range(0, 10) а не питон-лайк синтаксис как ты хочешь
да
источник

A

Alex Ф-ф-фэils!🌠︙ in Compiler Development
были вроде бы бумаги на такой синтаксис, не знаю, какая у них судьба
источник

M

MaxGraey in Compiler Development
А вот так кстати и C++ правильно отрабатывает:
https://godbolt.org/z/EQvJGy
источник

AS

Aleksey Shipilev in Compiler Development
Микробенчмарки-то будут уже? :)
источник

M

MaxGraey in Compiler Development
Aleksey Shipilev
Микробенчмарки-то будут уже? :)
Я думаю бесконечный цикл будет дольше чем возврат единицы 😉
источник