Комментарии 6
Это всё конечно здорово. Но возможность компилировать C++(N+1) в C++(N) или в C была бы более полезна. Да и динамические библиотеки для C++ это знатная засада.
+2
Что вообще дает ключевое слово «concept», кроме синтаксического сахара?
+1
Концепты образуют частичный порядок (partial ordering, subsumption), что позволяет удобно перегружать функции, к примеру, std::distance для разных категорий итераторов.
+1
Концепты образуют частичный порядок (partial ordering, subsumption), что позволяет удобно перегружать функции, к примеру, std::distance для разных категорий итераторов.
+1
Не очень понял последний пример. Можете пояснить, имелось в виду, что
enable_if_t
, реализованный таким образом через template type alias + requires clause, не отработает так же, как стандартный std::enable_if_t
(который спровоцирует SFINAE), а вызовет ошибку компиляции?+2
Определенный таким образом 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
Подробнее о том как equivalent, but functionally not equivalent функции сводят компилятор с ума можно посмотреть тут: www.youtube.com/watch?v=udTEfwCkmaw&t=2520s
+2
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Концепты: упрощаем реализацию классов STD Utility