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,...>实例,而不管第二个参数是什么,即使每个不同A<int,...>的更严格地说都是不同的类型,

如果我不必在理论上声明并跟踪所需的每个不同专业,这实际上会使它变得可行

我无法确定这一点。

4

1 回答 1

2
template<int I>
void doSomething(A<int, I> & value)
{...}
于 2013-06-01T07:27:10.450 回答