Il che non è poco, se ci pensi. Decidere di applicare un certo algoritmo in base al tipo di parametro, o specializzare una classe generica tramite una classe policy è qualcosa che risulta più semplice farlo con il polimorfismo compile time che con quello run time.Infatti l' unico utilizzo, a parte la tecnica del metaprogramming, che riesco a trovare è quello di creare wrapper o collezioni che non hanno bisogno di conoscere l' interfaccia
Però questo non giustifica l'utilizzo "a ogni costo" dei template.
Anche perché con il polimorfismo runtime, le classi derivate sono specializzazioni di un'unica classe base.
Con i template ti ritrovi con N classi distinte, che avranno pure le stesse funzioni ma sono cose diverse.
Per dirla tutta, non ti dovrebbe proprio interessare come sono chiamati i membri privati della classe: a te interessa solo la sua interfaccia. In ogni caso, si dovrebbe definire prima cosa si intende "buona norma", visto che, praticamente, ognuno ha la sua.Tutto ciò è buona norma o invece, come penso io, complica la comprensione del codice?