0

我目前正在编写一个应该根据模板参数专门化的类。

我现在想知道是否可以根据数字模板参数是否大于 X 来更精确地省略特定专业化的某些成员变量。

例如:

template<int N>
class Test
{
   int a;
   int b;
}

template<N > X>
class Test
{
  int a;
}

我正在考虑使用 std::conditional ,但这似乎导致至少选择一种类型。我当然可以使用 D-Pointer 方法和 std::conditional 并将特化放入指向的不同对象中,但我想知道是否有更好的方法。

我看到的另一种选择是使用抽象基类并有两个实现,一个用于 N < X,一个用于 N >= X,但我不确定这会更好。

4

1 回答 1

4

只需使用SFINAE

template<int N, typename = void>
class Test
{
   int a;
   int b;
};

template<int N>
class Test<N, typename std::enable_if<(N > X)>::type>
{
  int a;
};
于 2015-11-30T14:24:41.947 回答