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