std :: enable_if第二个问

时间:2012-11-08 04:50:45

标签: c++ 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 个答案:

答案 0 :(得分:3)

您可以使用部分特化。无需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