ciao.
ho il seguente codice:
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);
}
su print2(v) mi da il seguente errore:

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.