шаблон 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 ++, чтобы убедиться, что нет никаких проблем, зависящих от компилятора. Оба они вызывают одну и ту же ошибку.

Я действительно ценю любые содержательные комментарии, которые направлены на прояснение этой проблемы.

Спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос