#cpp #cpp14
В книге Бьярне Страуструпа "Программирование. Принципы и практика с использованием C++, 2-е издание.", глава 19, пункт 19.3.3 написано, что в С++14 мы можем использовать и применять к аргументам шаблона некую концепцию или требования шаблона. template// Для всех типов T requires Element () // таких, что является Element class vector { // . . . }; Вот пара концепций, которые предоставлены в книге (там их много): Element (): Е может быть элементом контейнера Number () : N ведет себя как число, поддерживая операции +, -, * и /. Но этот код не компилируется. Пожалуйста, объясните есть ли ключевое слово requires и вообще концепции шаблонов в С++?
Ответы
Ответ 1
Концепций нет в С++14, и их не будет в С++17. В настоящее время концепции реализованы только в GCC 6.1+, и включаются ключом командной строки -fconcepts: > type main.cpp #includetemplate requires sizeof(T) < 4 void f() { std::cout << "< 4\n"; } template requires sizeof(T) >= 4 void f() { std::cout << ">= 4\n"; } int main() { f (); f (); } > g++ -fconcepts -std=c++14 -Wall -pedantic main.cpp && a < 4 >= 4 Краткое описание синтаксиса можно прочитать на cppreference.
Комментариев нет:
Отправить комментарий