L'esempio compila con G++ ( come dimostrato), ma con VC++ lo stesso prototipo da errore.
Il che, onestamente, non mi stupisce dato che i template sono il tallone d'achille di molti compilatori. Per compilare con VC++ il prototipo dev'essere modificato come segue ( come lo stesso Thinking in C++ riporta)
codice:template<typename T, template< typename U, class = allocator<U> > class C> void print2(C<T>& c) { copy(c.begin(), c.end(),ostream_iterator<T>(cout, " ")); cout << endl; };Direi più che è complementare. Con i template si ha una oop a compile time, con le derivazioni si ha la oop a run time. Sono cose diverse. Tempo fa avevi chiesto consiglio su una abstract factory: quello è un esempio di come il polimorfismo basato su template si integri con quello a run time.ed è una programmazione alternativa all oop

Rispondi quotando