Какие понятия? - PullRequest
       37

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

22 голосов
/ 10 августа 2009

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

Ответы [ 2 ]

24 голосов
/ 10 августа 2009

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

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

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

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

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

10 голосов
/ 10 августа 2009

Вот статья, которая, я думаю, поможет:

http://www.devx.com/SpecialReports/Article/38864

Решение об их удалении также обсуждалось здесь, в SO, несколько раз. Это может оказаться интересным:

c0x Больше не имеет понятий

Концепции по сравнению с интерфейсами

Гипотетическое обсуждение концепций

...