c ++ szablon do parametru szablonu
ostatnio testowałem niektóre kody szablonów c ++ i znalazłem jeden zadziwiający błąd. Zgodnie z moimi badaniami internetowymi, w szczególności stackoverflow, ten kod jest całkowicie poprawny, ale kompilator podnosi błąd czasu kompilacji. Błąd znajduje się poniżej kodu.
Kod:
template<template<class> class C, typename T> void print(C<T>& c) {
}
int test() {
vector<string> v(5, "Yow!");
print(v);
return 0;
}
Wyjście kompilatora:
In function ‘int test()’:
error: no matching function for call to ‘print2(std::vector<std::basic_string<char> >&)’
note: candidate is:
note: template<template<class> class C, class T> void print2(C<T>&)
Wydaje się, że coś jest nie tak z definicją lub moim kompilatorem, ale przetestowałem ten kod zarówno z g ++, jak i clang ++, aby mieć pewność, że nie ma żadnego problemu zależnego od kompilatora. Oba powodują ten sam błąd.
Naprawdę doceniam wszelkie znaczące komentarze, które mają na celu wyjaśnienie tego problemu.
Dziękuję Ci