Hay muchos lugares en donde veo una clase con plantillas y no puedo evitar pensar por qué la persona que lo escribió usó plantillas.¿Por qué el impulso está tan fuertemente modelado?
Por ejemplo, la (s) clase (s) mutex. Todos los conceptos mutex se implementan como plantillas donde uno simplemente puede crear unas pocas clases base o clases abstractas con una interfaz que coincida con el concepto.
editar después de las respuestas: Pensé en el costo de las funciones virtuales, pero ¿no vale la pena revelar muy poco el rendimiento para una mejor comprensión? Quiero decir a veces (especialmente con el impulso) es realmente difícil entender el código con plantilla y descifrar los errores del compilador como resultado de un uso inadecuado de las plantillas.
sería una buena pregunta para este tipo: http://stackoverflow.com/users/5597/anthony-williams (autor de boost.thread): p –
La filosofía principal de la comunidad C++ es que "solo obtienes lo que usted pregunta por ". El proyecto Boost está intentando, al igual que el STL, seguir esa filosofía diseñando todas las bibliotecas usando plantillas. Sin embargo, hay un costo, como usted menciona: la comprensión a veces sufre. Si quieres una biblioteca que puedas entender más fácilmente, tal vez deberías echarle un vistazo a la biblioteca de Qt. ¡Contiene gran parte de lo que Boost hace, y más! En mi opinión, el diseño de Qt permite el desarrollo de C++ a gran escala, algo de lo que Boost carece por completo. –