-1

私はstd::enable_ifにまったく慣れておらず、それをどのように使用するのか疑問に思っています。テンプレートクラスがあります:

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

テンプレートにメンバーcを持たせたいのは

a = 5. 

std :: enable_ifを使用してこれを行うにはどうすればよいですか?これはstd::enable_ifを使用する正しいケースですか?

4

1 に答える 1

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
于 2012-11-08T04:54:37.733 に答える