1
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,...>
實例regardles的方式,即使每個不同的A<int,...>
是一個不同類型的條款要嚴格,是有可能重載函數接受的所有實例與非類型模板參數
這實際上使這個可行的使用,如果我沒有在理論上申報和跟蹤每個不同的分工,將需要的
我沒有能夠確定這一點。
非常感謝,現在有道理 – vurentjie