template<typename T,int I=5> struct A{
T _store[I];
};
template<typename T,int I>
void doSomething(A<T,I>& a){
std::cout << "basic template for all other types" << std::endl;
}
template<>
void doSomething(A<int>& a){
std::cout << "specialized integer template" << std::endl;
}
int main(int argc, char** argv){
A<char> a;
A<int> i;
A<int,10> i10;
doSomething(a);
doSomething(i);
doSomething(i10); //this does not call any specialized version yet
return 0;
}
有没有办法声明doSomething专门化接受第二个参数是什么的所有A<int,...>
个实例,即使每个不同的A<int,...>
是更严格的不同类型,
这实际上可以使这个可行使用,如果我不需要理论上声明和跟踪所需的每个不同的专业化
我无法确定这一点。
答案 0 :(得分:2)
template<int I>
void doSomething(A<int, I> & value)
{...}