different class implementations based on template parameter

这一生的挚爱 提交于 2020-02-27 06:24:08

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!