Я слышал все это новое (в /.) О том, что C ++ 0x больше не имеет концепций, но я понятия не имею, что это такое? Кто-нибудь может мне объяснить?
Что такое концепции?
Ответы (1)
Концепции - это общая функция программирования, которая позволяет кому-либо, пишущему шаблонный код, указывать требования, которым должны соответствовать параметры типа.
Например, некоторым типам коллекций требуется, чтобы параметр типа для коллекции определял оператор ‹. Таким образом, программист может определить концепцию под названием LessThanComparable, которая сообщает компилятору, что для параметра типа шаблонного класса должен быть определен оператор ‹. Если пользователь шаблона затем пытается создать экземпляр шаблона, используя тип, который не имеет концепции LessThanComparable (т.е. не имеет функции оператора ‹), компилятор может выдать простое сообщение об ошибке, а не поток сообщений об ошибках, связанных с шаблонным кодом. Компилятор также может использовать дополнительную информацию, предоставляемую концепциями, для создания более эффективного кода.
Это что-то вроде чрезмерного упрощения, но я думаю, что это дает вам общее представление о концепциях.
Если вы хотите опробовать некоторые возможности концепций, взгляните на Boost.Concept Проверить библиотеку. Я не думаю, что он предоставляет полный спектр возможностей, которые должны были быть в стандарте, но это хорошее место для начала.
Вы также можете посмотреть ConceptC ++, там есть хорошее определение концепций.