Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

different class implementations based on template parameter

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?

like image 477
user1387866 Avatar asked Jun 30 '14 13:06

user1387866


1 Answers

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
};
like image 60
Jesse Beder Avatar answered Sep 28 '22 01:09

Jesse Beder