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
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í.
Aquí es un artículo que creo que ayudaría:
http://www.devx.com/SpecialReports/Article/38864
La decisión de eliminarlos se ha discutido varias veces aquí en lo mismo. Estos podrían ser interesantes:
- 1. ¿Cuáles son los conceptos básicos en la programación funcional?
- 2. MVC: ¿Los modelos y objetos de entidad son conceptos separados?
- 3. ¿Qué conceptos de estadísticas son útiles para el perfil?
- 4. ¿Cuáles son los 3 principales conceptos principales en WPF?
- 5. ¿Cuáles son los conceptos de git de HEAD, master, origin?
- 6. Aprendiendo los conceptos básicos de WCF
- 7. ¿Cuáles son los conceptos básicos para tratar los eventos de entrada de usuario en Android?
- 8. ¿Cuáles son los diferentes conceptos de lenguaje de programación y qué idiomas los muestran de forma pura?
- 9. ¿Qué son los RFC?
- 10. ¿Qué son los futuros?
- 11. ¿Qué conceptos debo estudiar para lograr esto?
- 12. Conceptos básicos de socket
- 13. ¿Qué son los objetos anclados?
- 14. ¿Qué son los objetos diferidos?
- 15. ¿Qué son los archivos NDF?
- 16. ¿Qué son los métodos virtuales?
- 17. ¿Qué son los zócalos Async?
- 18. ¿Qué son los operadores levantados?
- 19. ¿Qué son los índices hipotéticos?
- 20. ¿Qué son los archivos .S?
- 21. ¿Qué son los objetos inmutables?
- 22. ¿Qué son los idiomas ISO?
- 23. Aprendiendo los conceptos básicos de UIScrollView
- 24. ¿Cuáles son los conceptos matemáticos centrales que un buen desarrollador debería saber?
- 25. Nuevos conceptos de arquitectura
- 26. ¿Qué idioma son los archivos conf de nginx?
- 27. cómo combinar django plus gevent los conceptos básicos?
- 28. aumentar los conceptos básicos de la matriz comprimida
- 29. Conceptos: Channel vs. Stream
- 30. ¿Dónde puedo aprender los conceptos básicos de escribir un lexer?
¡Eh, eso es casi exactamente lo que dijo el enlace de EBGreen! Extraña coincidencia, ¿eh? – jkeys
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
excelente respuesta. esta fue una de las preguntas sobre C++ que había tenido miedo de preguntar – chester89