Как стать автором
Обновить

Комментарии 6

Это всё конечно здорово. Но возможность компилировать C++(N+1) в C++(N) или в C была бы более полезна. Да и динамические библиотеки для C++ это знатная засада.
Что вообще дает ключевое слово «concept», кроме синтаксического сахара?
Концепты образуют частичный порядок (partial ordering, subsumption), что позволяет удобно перегружать функции, к примеру, std::distance для разных категорий итераторов.
Концепты образуют частичный порядок (partial ordering, subsumption), что позволяет удобно перегружать функции, к примеру, std::distance для разных категорий итераторов.
Не очень понял последний пример. Можете пояснить, имелось в виду, что enable_if_t, реализованный таким образом через template type alias + requires clause, не отработает так же, как стандартный std::enable_if_t (который спровоцирует SFINAE), а вызовет ошибку компиляции?
Определенный таким образом enable_if_t и пара таких функций f заставляют компиляторы вести себя неадекватно. К примеру GCC и Clang согласны в том, что это 2 декларации одной функции: https://gcc.godbolt.org/z/jBRf-G, и при этом вызов f() Clang компилирует, а GCC — нет: https://gcc.godbolt.org/z/N2Ohe4.
Подробнее о том как equivalent, but functionally not equivalent функции сводят компилятор с ума можно посмотреть тут: www.youtube.com/watch?v=udTEfwCkmaw&t=2520s
Зарегистрируйтесь на Хабре, чтобы оставить комментарий