我有一个通用函数,可以处理不同的容器。
template<template<class, class> class C, class T, class A>
void handle(C<T, A> const& c)
{
cout << "General handling\n";
}
如果我传给它一个自定义容器,我希望它有不同的反应。为了简单起见,我首先尝试通过为向量部分特化此函数来以不同方式处理向量。
以下是我认为它应该看起来的样子。
template<class T, class A>
void handle<std::vector>(std::vector<T, A> const& c)
{
cout << "vector handling\n";
}
然而gcc报错如下:
无法执行程序 编译器返回: 1 编译器stderr :16:36: 错误: 在主模板的声明中使用了句柄类std::vector>的模板ID 16 | (std::vector const& c) |
是否可以通过部分模板特化来解决?