Подтвердить что ты не робот

Что такое понятия?

Я слышал все это новое (on/.) о С++ 0x, не имеющем концепций, но я понятия не имею, что это такое? Может кто-нибудь объяснить мне?

4b9b3361

Ответ 1

Концепции - это общая функция программирования, которая позволяет человеку, пишущему шаблонный код, указывать требования, которым должны соответствовать параметры типа.

Например, некоторые типы коллекций нуждаются в параметре type для коллекции, чтобы определить & lt; оператор. Таким образом, программист может определить концепцию под названием LessThanComparable, которая сообщает компилятору, что параметр типа для шаблонного класса должен иметь оператор & lt; определены. Если пользователь шаблона затем пытается создать экземпляр шаблона, используя тип, который не имеет концепции LessThanComparable (то есть не имеет функции оператора & lt;), компилятор может выдавать простое сообщение об ошибке, а не поток сообщений об ошибках, связанных с шаблонным кодом. Компилятор также может использовать дополнительную информацию, предоставляемую концепциями, для генерации более эффективного кода.

Это слишком упрощает, но я думаю, что это дает вам общее представление о концепциях.

Если вы хотите опробовать некоторые возможности концепций, взгляните на библиотеку Boost.Concept Check. Я не думаю, что он предоставляет весь спектр возможностей, которые должны были быть в стандарте, но это хорошее место для начала.

Вы также можете посмотреть на ConceptC++, там есть хорошее определение понятий.