Il semplice fatto è che molti, se non la maggior parte, gli utenti del C ++ difficilmente possono capire che vector
è migliore di malloc
e free
, quindi il numero che non solo può apprezzare ma implementare la metaprogrammazione avanzata del modello non è molto alta. Questo implica che anche se fosse buono per il 90% delle situazioni, lo vedresti molto meno, semplicemente perché le persone non lo sapevano o come usarlo.
Tuttavia, le funzioni virtuali fanno hanno vantaggi, in particolare le funzioni virtuali sono molto più facili da usare rispetto al CRTP. I modelli di C ++ sono famosi per essere stronzi virtualmente su tutto e qualsiasi cosa, e il modello di inclusione fa schifo.
Tuttavia, [le funzioni virtuali] sono nettamente più lente e meno potenti. Ad esempio, in questo momento sto scrivendo il codice utilizzando il CRTP, in cui si ereditano gli overload dell'operatore da utilizzare con i modelli di espressione. In nessun modo le funzioni virtuali potrebbero far funzionare il lavoro.