El simple hecho es que muchos, si no la mayoría, los usuarios de C ++ apenas pueden comprender que vector
es mejor malloc
y free
, por lo tanto, el número que no solo puede apreciar sino implementar la metaprogramación avanzada de plantillas no es muy alto. Esto implica que incluso si fuera bueno para el 90% de las situaciones, lo vería en mucho menos, simplemente porque las personas no lo saben o cómo usarlo.
Sin embargo, las funciones virtuales no tienen ventajas, a saber, las funciones virtuales son mucho más fáciles de usar que el CRTP. Las plantillas de C ++ son conocidas por ser poco exigentes con prácticamente cualquier cosa y todo, y el modelo de inclusión apesta.
Sin embargo, [las funciones virtuales] son claramente más lentas y menos potentes. Por ejemplo, en este momento estoy escribiendo código usando el CRTP, donde heredas las sobrecargas del operador para usar con plantillas de expresión. No hay forma de que las funciones virtuales puedan hacer que eso funcione.