Re[21]: Carbon
От: CreatorCray  
Дата: 15.04.24 19:58
Оценка: 2 (1) :)
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, CreatorCray, Вы писали:


S>Боюсь, проблема не только в сайте

Проблема в твоих руках

S>Вы избавились от UB, и теперь ваш код работает неправильно всегда, даже в -O0:

S>https://godbolt.org/z/ToKv8Kx3d
Ты не сумел скопировать правильно:
У тебя: return (std::make_unsigned_t<signed_integral> (value) + 1) < value;
А надо: return signed_integral (std::make_unsigned_t<signed_integral> (value) + 1) < value;

https://godbolt.org/z/v18Eo1nr1

Program returned: 0
wow


CC>>А кого будем считать мастером? Тут мнения очень сильно расходятся.

S>Я верю людям на слово.
Зря.

S>я сразу считаю такого человека мастером.

А при чём тут вера на слово? Этож ты считаешь а не тот человек.

S> Поэтому когда кто-то мне пишет, что UB — ерунда

А где тебе написали конкретно что "UB — ерунда"?

S> и что он много лет успешно пишет на С++, а остальные — просто неудачники, не понимающие язык

Всё всегда оценивается по практическому выхлопу.
Если ударяться в странные конструкции и потом бороться со странностями compile time вычислений — то гемора будет побольше.
Если придерживаться KISS и писать просто и строго по делу, не растекаясь шаблонами по шаблонам — таких проблем не будет.

S>Который никогда не допускает сравнения знаковых с беззнаковыми

Постоянно и осознанно допускаю

S> и, уж тем более, знакового переполнения в своих программах.

Знакового точно никогда не было.
Беззнаковое осознанно используется в имплементации длинной математики.

S>Вот мне и интересно посмотреть на то, как именно мастер избегает подобных граблей.

Не ударяюсь в метапрограммирование. См ниже.

S>template is_max — просто очень компактный пример, иллюстрирующий проблему.

Проблема твоя в compile time вычислениях, которые работают совсем не так как реальная машина, под которую генерится код. И работают они так потому, что написаны во frontend компилятора, который витает в абстракциях и perfect мире, а не в backend, который знает за платформу и как на ней работают разные типы.
Это архитектурный баг компиляторостроителей, который можно починить но никто не станет, ибо пуристы упрутся рогом.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.