принимают в ней участие или просто сочувствующим: почему в библиотеку концептов не добавили аналоги для всех тайп трейтов, только в виде концептов?
потому что можно вместо однострочных концептов писать что то типо металямбд местных requires
вместо того чтобы писать концепт на простую штуку типо template<typename T> concept no_throw_X = std::is_nothowX_v<T>; Можно написать что то похожее на то, что происходит когда тебе нужно мелочь, которую ты больше нигде не используешь - в мире значений это лямбда [&x] = { x+=2}, в мире типов это template<typename T> requires std::nothowX_v<T> func(T x){ ... }
Продержу в курсе: requires std::is_nothrow_*<T> не то же самое, что и requires std::no_throw_*<T> (во втором случае однострочный концепт)
я не хочу четко указывать что тут как называется, я демонстрирую идею
Подозреваю, дело в том, что не все из них имеют смысл в качестве концептов. Тут, скорее, по каждому трейту думать нужно отдельно
Эта идея неправильная Я уже объяснил почему
подозреваю, в [p0872] эта тема поднималась, но это документ не для простых смертных
P0872R0: Discussion Summary: Applying Concepts to the Standard Library (by Beman Dawes) (2017-11-25)
Если интересно ПОЧЕМУ это не одно и то же, советую разузнать почему possible impl именно такой: https://en.cppreference.com/w/cpp/concepts/same_as
нет ну есть конечно нюансы с ограничением и перегрузками, не знаю requires делает ли функцию более ограниченной... Логично было бы, если бы делало. Но все эти концепты несложно нааписать самому в 1 строку, а раздувать стандартную либу наверное не хотели, итак сначала просто, потом добавили везде _v _t, потом концепты, дальше что...
https://stackoverflow.com/questions/52062386/does-constraint-subsumption-only-apply-to-concepts
Под "не для простых смертных" я думал ты имеешь в виду, что он сложный.. Но open-std просит логин и пароль.. Видимо он ещё и для элиты..
Для примера, если взять Type properties, то лишь по нескольким из них есть реальный смысл ограничить или перегрузить функции. Есть ещё, конечно, другие применения – например, ограничения на шаблонные параметры классов... Но могу предположить, что комитет не хочет спешить и сначала есть необходимость понять, что вообще программистам нужно, чтобы не разводить бардак в библиотеке, засоряя её потенциально малоиспользуемыми концептами, затрудняя их поиск и выбор
Концепты не являются синтаксическим сахаром над type traits и попытка написать их в одну строку приведёт к их некорректной реализации зачастую, на что верно указал @unterumarmung. Советую ознакомиться с обсуждаемой темой внимательнее. И желательно, если есть вопросы или недопонимание – продолжить обсуждение в @supapro
Обсуждают сегодня