The CRTP se sugiere en esta pregunta sobre el polimorfismo dinámico. Sin embargo, este patrón supuestamente solo es útil para el polimorfismo estático. El diseño que estoy viendo parece verse obstaculizado por las llamadas a funciones virtuales, como hinted at here.. Una aceleración de hasta 2.5x sería fantástico.¿Hay alternativas al polimorfismo en C++?
Las clases en cuestión son simples y se pueden codificar completamente en línea, sin embargo, no se sabe hasta el momento de ejecución qué clases se utilizarán. Además, pueden estar encadenados, en cualquier orden, acumulando insultos de rendimiento en lesiones.
Cualquier sugerencia (incluso cómo se puede utilizar el CRTP en este caso) bienvenido.
Editar: Google hace una mención a las plantillas de funciones. Estos parecen prometedores.
Creo que las declaraciones if en una plantilla pueden hacer que este lío sea un poco más limpio. Se ve prometedor de todos modos. – casualcoder
POR FAVOR use static_cast <> en lugar de reinterpret_cast <>, este último dará resultados incorrectos en ciertos casos (en una implementación típica, un ejemplo sería si Foo o Bar tiene múltiples clases base y Base no es el primero entre ellos). –
Buen punto gracias; respuesta actualizada – timday