Ci sono molti posti in boost dove vedo una classe basata su modelli e non posso fare a meno di pensare perché la persona che l'ha scritta ha usato i modelli.Perché la spinta è così fortemente basata sui modelli?
Ad esempio, le classi mutex. Tutti i concetti mutex sono implementati come modelli in cui è possibile creare semplicemente poche classi base o classi astratte con un'interfaccia che corrisponda al concetto.
modifica dopo risposte: ho pensato al costo delle funzioni virtuali, ma a volte non vale la pena di dare pochissime penalità in termini di prestazioni per una migliore comprensione? Voglio dire a volte (specialmente con boost) è davvero difficile capire il codice basato su modelli e decrittografare gli errori del compilatore come risultato di un uso improprio dei template.
sarebbe una buona domanda a questo ragazzo: http://stackoverflow.com/users/5597/anthony-williams (autore di boost.thread): p –
La filosofia principale della comunità C++ è che "Ottieni solo ciò che chiedi ". Il progetto Boost sta provando, proprio come l'STL, a seguire questa filosofia progettando tutte le librerie usando i template. C'è un costo però, come dici: la comprensione a volte soffre. Se vuoi una libreria puoi capire più facilmente, forse dovresti dare un'occhiata alla libreria Qt. Contiene molto di ciò che fa Boost e altro! A mio parere, il design di Qt consente uno sviluppo su larga scala in C++, qualcosa che manca completamente a Boost. –