Вот этого текста не видно
А когда заходишь в редактирование — видно
Для какой надобности в С++20 завезли функцию ssize ?
Ну, кроме того, что задолбало получать варнинги о сравнении знакового i и беззнакового size_t в циклах по массивам.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
LVV>Для какой надобности в С++20 завезли функцию ssize ? LVV>Ну, кроме того, что задолбало получать варнинги о сравнении знакового i и беззнакового size_t в циклах по массивам.
Что за хрень ?
В исходном посте редактирования не видно
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
ВМ>>https://www.cppstories.com/2022/ssize-cpp20/ LVV>Спасибо. LVV>Но там даже в комментах написали, что нефиг такой код писать... LVV>Есть более безопасные варианты.
When span was adopted into C++17, it used a signed integer both as an index and a size. Partly this was to allow for the use of "-1" as a sentinel value to indicate a type whose size was not known at compile time. But having an STL container whose size() function returned a signed value was problematic, so P1089 was introduced to "fix" the problem. It received majority support, but not the 2-to-1 margin needed for consensus.
This paper, P1227, was a proposal to add non-member std::ssize and member ssize() functions. The inclusion of these would make certain code much more straightforward and allow for the avoidance of unwanted unsigned-ness in size computations. The idea was that the resistance to P1089 would decrease if ssize() were made available for all containers, both through std::ssize() and as member functions.
LVV>Вот этого текста не видно
LVV>А когда заходишь в редактирование — видно
LVV>Для какой надобности в С++20 завезли функцию ssize ? LVV>Ну, кроме того, что задолбало получать варнинги о сравнении знакового i и беззнакового size_t в циклах по массивам.
Это море предупреждений, возникает также при совмещении MKL (где все размеры и индексы в int/int64_t) и стандартных контейнеров.
LVV>>Ну, кроме того, что задолбало получать варнинги о сравнении знакового i и беззнакового size_t в циклах по массивам. M>Так просто не сравнивай знаковые с беззнаковыми. У меня C++17, но на сравнение знаковых/беззнаковых он тоже ругается, и я отвык так делать.
Ну, я аналогично...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>>Для какой надобности в С++20 завезли функцию ssize ? LVV>В свете первой книжки по UB — понятною Там очень доходчиво в некоторых местах написано...
для сравнения знаковых и беззнаковых в С++20 введены специальные функции: здесь
cmp_equal( T t, U u )
cmp_not_equal( T t, U u )
cmp_less( T t, U u )
cmp_greater( T t, U u )
cmp_less_equal( T t, U u )
cmp_greater_equal( T t, U u )
У меня в коде есть класс
template<class TNum> Num;
для которого операции сравнения переопределены теперь через вызовы этих функций (раньше, до перехода на С++20 были похожие на приведённые по ссылке реализации). Никаких предупреждений, никаких UB.
BFE>для сравнения знаковых и беззнаковых в С++20 введены специальные функции: здесь
Да, это понятно. BFE>У меня в коде есть класс BFE>
BFE>template<class TNum> Num;
BFE>
BFE>для которого операции сравнения переопределены теперь через вызовы этих функций (раньше, до перехода на С++20 были похожие на приведённые по ссылке реализации). Никаких предупреждений, никаких UB.
Буду писать про ошибки — тоже все про это напишу.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!