Комментарии 5
статья интересная! особенно когда опыта в реальном программирование мало. Я сам пытаюсь в одиночку создать проект. с перегрузками приходится встречаться часто.
Прямо требуется мат. аппарат, чтобы узнать в A && B то же самое, что и B && A? Ну прямо в стиле C++ -- разбросать грабли на ровном месте. Здесь же && не перегружаемый оператор, которой внезапно может оказаться не ассоциативным, почему же не сделали то???
Я рассказывал почему так получилось - requires и constraints в плюсах это не логическая система, и они не задумывались как логическая система в математическом смысле. То что мы накидываем туда знакомые понятие это уже другое, можно знаете ли и на constexpr решить "задачу восьми королев", но зачем? Это прежде всего механизм частичного упорядочивания перегрузок и шаблонов, встроенный в уже существующую (и крайне хрупкую) модель разрешения перегрузок, чтобы ответить на очень практический вопрос компилятора: какая из двух функций более ограниченная и, значит, более предпочтительная, а не эквивалентны ли два логических высказывания. Иначе мы рискуем втащить еще что-нибудь такое, от чего потом придется еще 20 лет избавляться или получим еще одни макросы
Когда читаешь такие статьи, так и хочется следующий проект что-нибудь написать на C++. Хотя бы для того, чтобы посмотреть на разницу с теми языками, что оказались вместо.
В определении AlsoTrueConcept точно нет опечатки? Чтобы всегда было true нужен оператор ||, а не &&.

Нескучное программирование. Иерархия концептов