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

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


person devin    schedule 10.08.2009    source источник


Ответы (1)


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

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

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

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

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

person Ferruccio    schedule 10.08.2009
comment
Ха, это почти именно то, что сказано в ссылке EBGreen! Странное совпадение, да? - person jkeys; 10.08.2009
comment
Не совсем. Я прочитал эту статью, когда она была впервые опубликована почти год назад. У меня есть возможность сохранять информацию :-) - person Ferruccio; 10.08.2009
comment
отличный ответ. это был один из вопросов о C ++, который я боялся задать - person chester89; 10.08.2009