ciao.
ho il seguente codice:
su print2(v) mi da il seguente errore:codice:#include "stdafx.h" #include <vector> #include <iostream> #include <string> using namespace std; // As long as things are simple, // this approach works fine: template<typename C> void print1(C& c) { typename C::iterator it; for(it = c.begin(); it != c.end(); it++) cout << *it << " "; cout << endl; } // Template-template argument must // be a class; cannot use typename: template<typename T, template<typename> class C> void print2(C<T>& c) { copy(c.begin(), c.end(),ostream_iterator<T>(cout, " ")); cout << endl; } int main() { vector<string> v(5, "Yow!"); print1(v); print2(v); }
c:\test\copy constructor\copy\copy.cpp(26): error C2784: 'void print2(C<T> &)' : could not deduce template argument for 'C<__unnamed> &' from 'std::vector<_Ty>'
with
[
_Ty=std::string
]
è un problema di compilatore?
uso vs 2003.net
come si trasforma la dichiarazione con deduzione(si chiama cosi?) in dichiarazione esplicita?
grazie.

Rispondi quotando