170 похожих чатов

Господа знатоки, я знаю, вы любите обсуждать стандарт. Вот есть

концепт weakly_incrementable, и есть к нему семантические требования:
Let i be an object of type I. When i is in the domain of both pre- and post-increment, i is said to be incrementable. I models weakly_incrementable<I> only if
- The expressions ++i and i++ have the same domain.
- If i is incrementable, then both ++i and i++ advance i to the next element.
- If i is incrementable, then addressof(++i) is equal to addressof(i).
(https://eel.is/c++draft/iterator.concept.winc#14)
Внимание, вопрос: что значит "advance i to the next element"? Что такое next element для инта, который судя по тому, что его задумано пихать в iota_view, является weakly_incrementable?

23 ответов

57 просмотров

это очень похоже на требование к итераторам, а не к int-ам

Roman-Sandu Автор вопроса
Alex
это очень похоже на требование к итераторам, а не ...

weakly_incrementable это общий концепт, задуманный и для итераторов, и для интов, и для всего на свете

Roman Sandu
weakly_incrementable это общий концепт, задуманный...

"advance i to the next element" = "укажет на один и тот же следующий элемент"? Т.е. у тебя если на входе i = 3, то i++ и ++i вернут 7 (например), но оба

Roman-Sandu Автор вопроса

Это ничего не объясняет. Операторы ++ и определяют, что такое "следующий элемент" для нашего типа. Какая-то циклическая логика

Roman Sandu
Это ничего не объясняет. Операторы ++ и определяют...

чтобы ++а и а++ переключались в одно и то же состояние (внутреннее хранимое значение)?

следующий incrementable элемент в некой последовательности?,.

Roman-Sandu Автор вопроса
Roman Sandu
Это ничего не объясняет. Операторы ++ и определяют...

Это мне напоминает семантическое требование к equality_comparable про то, что если bool(a == b) == true, то a equals b. Долго пытался понять, что тут значит "equals", если не operator==, и наконец-то понял, что имеется в виду value equality, которую программист сам определяет для каждого типа в своей голове

А если дословно закинуть предложение в YYY.translate, то получим осмысленный перевод IMO: Если i является инкрементируемым, то и ++i, и i++ продвигают i к следующему элементу

Roman-Sandu Автор вопроса
Alex
чтобы ++а и а++ переключались в одно и то же состо...

Тогда почему не написано именно так, а используется какая-то загадочная формулировка про advance to the next element?

Roman-Sandu Автор вопроса
Alex
А если дословно закинуть предложение в YYY.transla...

Так, я ищу дискуссии по существу, а не в вопросах перевода английского языка. Понятия "advance" и "next element" нигде в стандарте не определены (либо я не нашёл), хочется понять, как их предполагается интерпретировать

Roman-Sandu Автор вопроса
Roman-Sandu Автор вопроса

Интересно конечно мнение Антона по этому вопросу услышать. Никто не знает, он любит когда его пингуют посреди дня в субботу?

Roman-Sandu Автор вопроса

Нет, не могу успокоится, нужно мнение члена комитета. Была не была, @antoshkka (не стукай пожалуйста). Это ситуация, аналогичная if bool(a == b) == true, then a equals b и каждый программист сам определяет, что такое advance для его типа, так же как и сам определяет equals, или есть всё таки какой-то скрытый смысл?

Roman Sandu
Что такое "последовательность"?

Упорядоченный набор элементов. Это реально вызывает какие-то проблемы в понимании? Или есть конкретный кейс, в котором это определение неоднозначно?

Roman-Sandu Автор вопроса
Max
Упорядоченный набор элементов. Это реально вызыва...

В стандарте не должно быть размытых формулировок с интуитивными пониманием. Если там что-то написано, то должно строго и однозначно интерпретироваться читателем. Можно по-другому вопрос сформулировать, что изменится, если это требование выкинуть?

Roman Sandu
Нет, не могу успокоится, нужно мнение члена комите...

"вообще" каждый сам для себя, конечно но есть нюанс: если ты хочешь, чтобы части стандартной библиотеки, использующие == с твоим типом, не ушли в расколбас и не устроили тебе счастливую сессию в отладчике — есть определенные требования: https://en.cppreference.com/w/cpp/concepts/equality_comparable#Semantic_requirements (а также, чтобы коллеги, которые на это напорются, не пришли к тебе с паяльником)

Roman-Sandu Автор вопроса
Гражданин Котейко
"вообще" каждый сам для себя, конечно но есть нюа...

std::equality_comparable<T> is modeled only if, given objects a and b of type T, bool(a == b) is true if and only if a and b are equal.

Roman Sandu
В стандарте не должно быть размытых формулировок с...

То есть, в принципе не должно быть слов? Любое словесное определение рано или поздно или зациклится, или закончится на интуитивно-понятных сущностях. Если это требование выкинуть, то либо ++i, либо i++ сможет передвинуть i не на следующий элемент в последовательности.

Roman-Sandu Автор вопроса
Roman Sandu
std::equality_comparable<T> is modeled only if, gi...

Вы бы хоть сами свою ссылку прочитали, перед тем как других учить :(

Roman Sandu
Вы бы хоть сами свою ссылку прочитали, перед тем к...

вы хотите чтобы стандарт включал в себя заодно половину толкового словаря?

Roman-Sandu Автор вопроса
Гражданин Котейко
вы хотите чтобы стандарт включал в себя заодно пол...

А вам очевидно определение слова "equals"? Математики уже 200 лет пытаются понять, что оно значит, и все никак 😢

какие буквы в "вообще каждый сам для себя, но есть ограничивающие условия" вам не понятны?

Roman-Sandu Автор вопроса
Гражданин Котейко
какие буквы в "вообще каждый сам для себя, но есть...

Я прочитал ваше сообщение так, что каждый для себя определяет operator==, а не слово equals. Но даже если наоборот, стандарт требует, чтобы эти понятия совпадали, но не определяет второго из них. Мне кажется, это дефект стандарта, и так писать не следует

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Кстати а покупал кто-нибудь ЭЦП для подписи кода? А то у меня на некоторых компах и ОС иногда SmartScreen винды программу за вирус принимал. Если купить такую ЭЦП и подписыват...
Дмитрий Завгородний
15
Карта сайта