Можно ли перегрузить функцию, чтобы принять все экземпляры с нетиповым параметром шаблона

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,...> это другой тип в более строгих терминах,

это фактически сделало бы это целесообразным для использования, если бы мне не приходилось теоретически объявлять и отслеживать каждую отдельную специализацию, которая потребуется

я не смог определить это.

1

Решение

template<int I>
void doSomething(A<int, I> & value)
{...}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]