2009-08-10 33 views
22

He escuchado todo esto nuevo (en /.) Sobre C++ 0x que ya no tiene conceptos, pero no tengo idea de lo que son? ¿Puede alguien explicarme?¿Qué son los conceptos?

Respuesta

25

Los conceptos son una característica de la programación genérica que permiten a alguien escribir código de plantilla para especificar requisitos que los parámetros de tipo deben cumplir.

Por ejemplo, algunos tipos de colecciones necesitan el parámetro de tipo para que la colección defina el operador <. Entonces el programador podría definir un concepto llamado LessThanComparable que le dice al compilador que el parámetro de tipo a la clase de plantilla necesita tener el operador < definido. Si el usuario de plantilla intenta instanciar la plantilla utilizando un tipo que no tiene el concepto LessThanComparable (es decir, no tiene una función de operador <), el compilador puede emitir un mensaje de error simple en lugar del torrente de mensajes de error asociados con el código de plantilla. El compilador también puede aprovechar la información adicional proporcionada por los conceptos para generar un código más eficiente.

Esto es un poco de una sobreimplicación, pero creo que le da la idea general detrás de los conceptos.

Si desea probar algunas de las capacidades de los conceptos, eche un vistazo a la biblioteca de comprobación Boost.Concept. No creo que proporcione la gama completa de capacidades que iban a estar en el estándar, pero es un buen lugar para comenzar.

Es posible que también desee consultar ConceptC++, hay una buena definición de conceptos allí.

+0

¡Eh, eso es casi exactamente lo que dijo el enlace de EBGreen! Extraña coincidencia, ¿eh? – jkeys

+2

No realmente. Leí ese artículo cuando se publicó por primera vez hace casi un año. Tengo la capacidad de retener información :-) – Ferruccio

+0

excelente respuesta. esta fue una de las preguntas sobre C++ que había tenido miedo de preguntar – chester89

Cuestiones relacionadas