Ошибка при использовании шаблона в качестве параметра шаблона
Как говорится, без комментариев:
#include <iostream>
#include <list>
template<typename T, template<class> class Container_t>
void someFunc()
{
}
int main()
{
someFunc<int, std::list>();
return 0;
}
main.cpp:49:5: error: no matching function for call to 'someFunc'
main.cpp:18:6: note: candidate template ignored: invalid explicitly-specified argument for template parameter 'Container_t'
Подскажите, что я не так делаю?
Ответы (1 шт):
Автор решения: HolyBlackCat
→ Ссылка
У std::list на самом деле два шаблонных параметра, а не один. Второй - аллокатор, но у него есть аргумент по умолчанию.
Код валиден начиная с C++17, и все основные компиляторы с этим согласны (Clang - только с флагом -frelaxed-template-template-args).
Если нет С++17, то можно пофиксить вот так:
template<typename T, template<class...> class Container_t>