O fato simples é que muitos usuários de C ++, se não a maioria, mal conseguem entender o que vectoré melhor malloce free, portanto, o número que pode não apenas apreciar, mas implementar a metaprogramação avançada de modelos não é muito alto. Isso implica que, mesmo que fosse bom para 90% das situações, você o veria em muito menos, simplesmente porque as pessoas não sabem sobre ele ou como usá-lo.
No entanto, funções virtuais não têm vantagens, ou seja, funções virtuais são muito mais fáceis de usar do que o CRTP. Os modelos C ++ são notórios por serem desprezíveis em praticamente tudo e qualquer coisa, e o modelo de inclusão é péssimo.
No entanto, elas [funções virtuais] são claramente mais lentas e menos poderosas. Por exemplo, agora estou escrevendo código usando o CRTP, onde você herda sobrecargas de operador para usar com modelos de expressão. Não há como as funções virtuais possivelmente fazerem esse trabalho.