Aroch
> for (int pos{}; const auto& value : chunk)
эт чё за синтаксис такой? это в 20 добавили? или в 17 тоже можно?
pahaa
> эт чё за синтаксис такой? это в 20 добавили? или в 17 тоже можно?
если ты про pos{} то это инициализации нулем, не помню уже в каком добавили я на 23 пересел и не хочу возвращаться :)
судя по https://en.cppreference.com/w/cpp/language/zero_initialization с 11 стандарта ещё.
pahaa
> чё вдруг-то?
> uint - uint -> uint
Переменная n объявлена как int
Aroch
> если ты про pos{} то это инициализации нулем
ты в 11 стандарте перед ренж фор не можешь точку с запятой поставить
даже в ифах её можно ставить только с 17
init-statement - (since C++20) either
an alias declaration (since C++23)
Оу май! Я прям хочу 23 )))
Его уже где-то реально используют?
Всё выражение vec.size() - 5 будет uint т.к. это наиболее близкий общий тип.
https://godbolt.org/z/d149Y9sGd
А каст беззнакового к знаковому с переполнением - это UB тащемта.
pahaa
> Его уже где-то реально используют?
в компиляторах многое уже реализовано, так что да, почему нет?
totoro
> А каст беззнакового к знаковому с переполнением - это UB тащемта.
Разве? Компилятор типа оптимизирует, предполагая что программа так не делает?
1 frag / 2 deaths
Можно присвоить без UB только если значение операнда справа находится в допустимых границах диапазона операнда слева, иначе UB.
totoro
> Можно присвоить без UB только если значение операнда справа находится в допустимых границах диапазона операнда слева, иначе UB.
неа, это IB
1 frag / 2 deaths
> Компилятор типа оптимизирует, предполагая что программа так не делает?
Судя по всему, на практике нигде не оптимизирует. Но по стандарту - UB.
UB если переполнение происходит в вычислениях. При конвертации это IB.
Sbtrn. Devil обработку хвоста забыл.
По идее должно быть что-то типа такого, не?
std::println("{}", vec | std::views::drop( 2) | std::views::reverse | std::views::drop( 5) | std::views::reverse | std::views::filter( []( auto v){ return v&1; }) | std::views::chunk( 4) );
Но в clang у меня не работает chunk, а gcc не умеет печатать vector
https://godbolt.org/z/ah6oTPohz
entryway
> | std::views::reverse
drop_last ждем :)
сколько всего еще предстоит добавить.
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2214r2.html
Aroch
> еа, это IB
Раз ты за самые новые плюсы то ты должен знать это: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2218.htm
pahaa
> Но по стандарту - UB.
А это где-то написано? Не про арифметику а именно про приведение
Тема в архиве.