Template template параметры функций

Только только начал изучать C++, базовый python. Написал следующий код (текст split не привожу, с ним пока проблем нет):

template <template<typename> typename C>
void Print(const C<std::string> &container) {
    for (const std::string &path : container) {
        std::cout << path << std::endl;
    }
}


int main() {

    std::string path = "/root/tests/01.a";
    char separator = '/';

    std::deque<std::string> result = split(path, separator);
    Print(result);


    return 0;
}

В main в дальнейшем собираюсь использовать Print для вывода элементов set'а. Сейчас пытаюсь вывести элементы дека. Но точно элементы и дека и множества имеют тип string. Поэтому мне нужны template-template параметры для функции Print. Однако компилятор ругается на строку

Print(result);

Пишет- "отсутствуют экземпляры шаблон функции "Print", соответствующие списку аргументов"


Ответы (2 шт):

Автор решения: Harry

Поскольку на самом деле дек имеет два шаблонных параметра, попробуйте так:

template <template<typename T, typename = std::allocator<T>> typename C>
void Print(const C<std::string> &container) {
    for (const std::string &path : container) {
        std::cout << path << std::endl;
    }
}
→ Ссылка
Автор решения: user7860670

В этом примере нет необходимости где-то указывать нижележащий тип элемента контейнера или количество параметров шаблона контейнера:

void Print(auto const & container)
{
    for (auto const & item: container)
    {
        ::std::cout << item << ::std::endl;
    }
}
→ Ссылка