Re: Новый вопрос - про ssize
От: T4r4sB Россия  
Дата: 14.08.25 16:05
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>

LVV>Вот этого текста не видно
LVV>А когда заходишь в редактирование — видно

LVV>Для какой надобности в С++20 завезли функцию ssize ?

Для безопасности в вычислениях где промежуточный результат может быть отрицательным.

Самый тупой пример

for (ssize_t i=0; i<v.ssize()-1; ++i)
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте
Новый вопрос - про ssize
От: LaptevVV Россия  
Дата: 04.08.25 09:14
Оценка:

Вот этого текста не видно
А когда заходишь в редактирование — видно

Для какой надобности в С++20 завезли функцию ssize ?
Ну, кроме того, что задолбало получать варнинги о сравнении знакового i и беззнакового size_t в циклах по массивам.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Отредактировано 05.08.2025 6:26 LaptevVV . Предыдущая версия . Еще …
Отредактировано 05.08.2025 6:25 LaptevVV . Предыдущая версия .
Отредактировано 05.08.2025 6:23 LaptevVV . Предыдущая версия .
Отредактировано 05.08.2025 5:55 LaptevVV . Предыдущая версия .
Re: Новый вопрос
От: LaptevVV Россия  
Дата: 05.08.25 06:21
Оценка:
LVV>Для какой надобности в С++20 завезли функцию ssize ?
LVV>Ну, кроме того, что задолбало получать варнинги о сравнении знакового i и беззнакового size_t в циклах по массивам.
Что за хрень ?
В исходном посте редактирования не видно
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Новый вопрос - про ssize
От: Великий Мессия google
Дата: 05.08.25 07:05
Оценка:
https://www.cppstories.com/2022/ssize-cpp20/
Re[2]: Новый вопрос - про ssize
От: LaptevVV Россия  
Дата: 05.08.25 10:00
Оценка:
ВМ>https://www.cppstories.com/2022/ssize-cpp20/
Спасибо.
Но там даже в комментах написали, что нефиг такой код писать...
Есть более безопасные варианты.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Новый вопрос - про ssize
От: Великий Мессия google
Дата: 05.08.25 10:07
Оценка:
Здравствуйте, LaptevVV, Вы писали:

ВМ>>https://www.cppstories.com/2022/ssize-cpp20/

LVV>Спасибо.
LVV>Но там даже в комментах написали, что нефиг такой код писать...
LVV>Есть более безопасные варианты.

ну да, ну да
https://stackoverflow.com/a/56217338

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1227r1.html

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.

Re: Новый вопрос - про ssize
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 05.08.25 10:13
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>

LVV>Вот этого текста не видно
LVV>А когда заходишь в редактирование — видно

LVV>Для какой надобности в С++20 завезли функцию ssize ?

Чтобы возвращала ssize_t, не?


LVV>Ну, кроме того, что задолбало получать варнинги о сравнении знакового i и беззнакового size_t в циклах по массивам.


Так просто не сравнивай знаковые с беззнаковыми. У меня C++17, но на сравнение знаковых/беззнаковых он тоже ругается, и я отвык так делать.
Маньяк Робокряк колесит по городу
Re: Новый вопрос - про ssize
От: Chorkov Россия  
Дата: 05.08.25 10:13
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>

LVV>Вот этого текста не видно
LVV>А когда заходишь в редактирование — видно

LVV>Для какой надобности в С++20 завезли функцию ssize ?
LVV>Ну, кроме того, что задолбало получать варнинги о сравнении знакового i и беззнакового size_t в циклах по массивам.

Это море предупреждений, возникает также при совмещении MKL (где все размеры и индексы в int/int64_t) и стандартных контейнеров.
Re[2]: Новый вопрос - про ssize
От: LaptevVV Россия  
Дата: 05.08.25 10:25
Оценка:
LVV>>Ну, кроме того, что задолбало получать варнинги о сравнении знакового i и беззнакового size_t в циклах по массивам.
M>Так просто не сравнивай знаковые с беззнаковыми. У меня C++17, но на сравнение знаковых/беззнаковых он тоже ругается, и я отвык так делать.
Ну, я аналогично...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Новый вопрос - про ssize
От: LaptevVV Россия  
Дата: 12.08.25 18:51
Оценка:
LVV>Для какой надобности в С++20 завезли функцию ssize ?
В свете первой книжки по UB — понятною Там очень доходчиво в некоторых местах написано...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Новый вопрос - про ssize
От: B0FEE664  
Дата: 15.08.25 17:38
Оценка:
Здравствуйте, 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.
И каждый день — без права на ошибку...
Re[3]: Новый вопрос - про ssize
От: LaptevVV Россия  
Дата: 15.08.25 17:59
Оценка:
BFE>для сравнения знаковых и беззнаковых в С++20 введены специальные функции: здесь
Да, это понятно.
BFE>У меня в коде есть класс
BFE>
BFE>template<class TNum> Num;
BFE>

BFE>для которого операции сравнения переопределены теперь через вызовы этих функций (раньше, до перехода на С++20 были похожие на приведённые по ссылке реализации). Никаких предупреждений, никаких UB.

Буду писать про ошибки — тоже все про это напишу.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.