基于模板参数的不同类实现

时间:2014-06-30 13:17:07

标签: c++ templates c++11 template-meta-programming

我认为对于了解模板的人来说这是微不足道的......

假设我们需要此模板类的两种不同实现,具体取决于N的值:

template <int N>
class Foo {
    ...
};

例如:

template <int N>
class Foo {
    ... // implementation for N <= 10
};

template <int N>
class Foo {
    ... // implementation for N > 10
};

我们怎样才能在C ++ 11中做到这一点?

1 个答案:

答案 0 :(得分:20)

使用带有默认值的额外模板参数来区分案例:

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
};