问题
I suppose this is trivial for people who know templates...
Suppose we want two different implementations of this template class, depending on the value of N:
template <int N>
class Foo {
...
};
For example:
template <int N>
class Foo {
... // implementation for N <= 10
};
template <int N>
class Foo {
... // implementation for N > 10
};
How can we do that in C++11?
回答1:
Use an extra template parameter with a default value to distinguish cases:
template <int N, bool b = N <= 10>
class Foo;
template <int N>
class Foo<N, true> {
... // implementation for N <= 10
};
template <int N>
class Foo<N, false> {
... // implementation for N > 10
};
来源:https://stackoverflow.com/questions/24491040/different-class-implementations-based-on-template-parameter