Я слышал все это новое (on/.) о С++ 0x, не имеющем концепций, но я понятия не имею, что это такое? Может кто-нибудь объяснить мне?
Что такое понятия?
Ответ 1
Концепции - это общая функция программирования, которая позволяет человеку, пишущему шаблонный код, указывать требования, которым должны соответствовать параметры типа.
Например, некоторые типы коллекций нуждаются в параметре type для коллекции, чтобы определить & lt; оператор. Таким образом, программист может определить концепцию под названием LessThanComparable, которая сообщает компилятору, что параметр типа для шаблонного класса должен иметь оператор & lt; определены. Если пользователь шаблона затем пытается создать экземпляр шаблона, используя тип, который не имеет концепции LessThanComparable (то есть не имеет функции оператора & lt;), компилятор может выдавать простое сообщение об ошибке, а не поток сообщений об ошибках, связанных с шаблонным кодом. Компилятор также может использовать дополнительную информацию, предоставляемую концепциями, для генерации более эффективного кода.
Это слишком упрощает, но я думаю, что это дает вам общее представление о концепциях.
Если вы хотите опробовать некоторые возможности концепций, взгляните на библиотеку Boost.Concept Check. Я не думаю, что он предоставляет весь спектр возможностей, которые должны были быть в стандарте, но это хорошее место для начала.
Вы также можете посмотреть на ConceptC++, там есть хорошее определение понятий.
Ответ 2
Вот статья, которая, я думаю, помогла бы:
http://www.devx.com/SpecialReports/Article/38864
Решение об их устранении несколько раз обсуждалось здесь и в SO. Это может оказаться интересным: