шаблон c ++ для параметра шаблона
недавно я тестировал некоторые коды шаблонов c ++ и обнаружил одну ошеломляющую ошибку. Согласно моим исследованиям в интернете, в частности, к описанию stackoverflow, этот код полностью действителен, однако компилятор вызывает ошибку времени компиляции. Ошибка находится ниже кода.
Код:
template<template<class> class C, typename T> void print(C<T>& c) {
}
int test() {
vector<string> v(5, "Yow!");
print(v);
return 0;
}
Выход компилятора:
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>&)
Кажется, что-то не так с определением или моим компилятором, но я проверил этот код как с g ++, так и clang ++, чтобы убедиться, что нет никаких проблем, зависящих от компилятора. Оба они вызывают одну и ту же ошибку.
Я действительно ценю любые содержательные комментарии, которые направлены на прояснение этой проблемы.
Спасибо