Comments 2
следующий простой концепт Incrementable требует, чтобы объект поддерживал операцию инкремента
Всё, что он требует, это чтобы выражение ++t;
было валидным. То, что это именно инкремент в обычном понимании он потребовать не может.
requires(T a) является общим определением
Не является, такой же синтаксис как и для параметров функций для того и сделан чтобы можно было дописывать *, &, ведь иначе невозможно это всё навесить в выражение слева от стрелки, синтаксис которой, к слову, и делает код более понятным и читаемым по сравнению с enable_if<is_something<decltype(declval
template<typename T>
concept EquationArray = requires(T &a)
{
{ *std::begin(a) } -> std::same_as<Equation &>;
{ std::begin(a) } -> std::forward_iterator;
{ std::end(a) } -> std::forward_iterator;
};
В отличие от enable_if, концепты дают ясное и легко читаемое описание
Не, ну, для прожжённого плюсовика IsEquation<std::iter_value_t<decltype(std::begin(std::declval<T&>()))>>;
, может, и ясное и легко читаемое, но для него и enable_if требуемой для обозначенной задачи сложности тоже будет ясным и легко читаемым.
Рассмотрим сообщения об ошибках компилятора
Давайте, куда смотреть?
Подводя итог, эта статья демонстрирует работу концептов на практике, показывая, как они упрощают работу с шаблонами и улучшают качество сообщений об ошибках.
Удобно, а нас за переписывание целей лабораторных в вывод в любой вариации "цели достигнуты" отправляли домой подумать.
P.S.
Я нашёл
я выбрал
Алина, мы что-то про вас не знаем?
P.P.S.
Товарищи преподаватели (а я почем-то уверен, что это очередная серия сериала "зачёт за статью на хабр"), не надо так делать. Качественное образование не может нормально сосуществовать с оценками, поставленными за красивые глаза, за посещаемость, за статьи на хабр и за прочую подобную чертовщину.
Какой ужас. Делать C++ столько лет объективно более хорошим и удобным (начиная с C++11) и при этом внедрять вот это всё, чтобы никто никогда из начинающих программистов не стал даже притрагиваться к языку.
Учитывая, что в других популярных языках такой жести практически нет (либо она реализована удобнее), возникают сомнения, что в достаточно низкоуровневом C++ это вообще должно было быть.
Концепты в современном C ++