std :: enable_if второй запрос

Я совершенно новичок в std :: enable_if и мне интересно, как его использовать.
У меня есть шаблон класса:

template<int a, int b>
class foo {
int c;
}

Я только хочу, чтобы шаблон имел член c, когда

a = 5.

Как мне это сделать, используя std :: enable_if?
Это правильный случай для использования std :: enable_if?

-1

Решение

Вы можете использовать частичную специализацию. Нет необходимости std::enable_if,

//primary template
template<int a, int b>
class foo
{
//whatever
};

//partial specialization
template<int b>
class foo<5,b>  //when a = 5, this specialization will be used!
{
int c;  //it has member c
};

Использование:

foo<1,3>  f1; //primary template is used
foo<5,3>  f2; //partial specialization is used
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]