Концепции - это общая функция программирования, которая позволяет кому-то, пишущему шаблонный код, указывать требования, которым должны удовлетворять параметры типа.
Например, для некоторых типов коллекции требуется параметр типа для коллекции, чтобы определить <оператор.Таким образом, программист может определить концепцию под названием LessThanComparable, которая сообщает компилятору, что для параметра типа в шаблонном классе должен быть определен operator <.Если пользователь шаблона затем пытается создать экземпляр шаблона, используя тип, который не имеет концепции LessThanComparable (то есть не имеет оператора <функция), компилятор может выдавать простое сообщение об ошибке, а не поток сообщений об ошибках, связанных с шаблонным кодом.Компилятор также может воспользоваться дополнительной информацией, предоставляемой концепциями, для генерации более эффективного кода. </p>
Это отчасти упрощение, но я думаю, что оно дает вам общее представление о концепциях.
Если вы хотите опробовать некоторые возможности концепций, взгляните на библиотеку Boost.Concept Check.Я не думаю, что он предоставляет весь спектр возможностей, которые должны были быть в стандарте, но это хорошее место для начала.
Вы также можете взглянуть на ConceptC ++ ,там есть хорошее определение понятий.