Здравствуйте, 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, значит пора закрыть эту страницу.
Всем пока