Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否可以根据模板参数的条件排除模板成员变量?_C++_Templates_Conditional_Opaque Pointers - Fatal编程技术网

C++ 是否可以根据模板参数的条件排除模板成员变量?

C++ 是否可以根据模板参数的条件排除模板成员变量?,c++,templates,conditional,opaque-pointers,C++,Templates,Conditional,Opaque Pointers,我目前正在编写一个类,它应该根据模板参数进行专门化 我现在想知道,是否可以根据数值模板参数是否大于X,为特定的专门化省略某些成员变量,使其更精确 例如: template<int N> class Test { int a; int b; } template<N > X> class Test { int a; } 模板 课堂测试 { INTA; int b; } 模板X> 课堂测试 { INTA; } 我在考虑使用std::conditio

我目前正在编写一个类,它应该根据模板参数进行专门化

我现在想知道,是否可以根据数值模板参数是否大于X,为特定的专门化省略某些成员变量,使其更精确

例如:

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

template<N > X>
class Test
{
  int a;
}
模板
课堂测试
{
INTA;
int b;
}
模板X>
课堂测试
{
INTA;
}
我在考虑使用std::conditional,但这似乎导致至少选择了一种类型。当然,我可以使用D-Pointer方法和std::conditional并将专门化放在指向的不同对象中,但我想知道是否有更好的方法

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

只需使用

模板
课堂测试
{
INTA;
int b;
};
模板
类测试::类型>
{
INTA;
};
只需使用

模板
课堂测试
{
INTA;
int b;
};
模板
类测试::类型>
{
INTA;
};

std::conditional
的确切问题是什么?这似乎有点像。你想用这个模型做什么?我想根据对类的要求,在两种或更多不同的实现类的方法中选择更有效的方法。也就是说,当N小于4时,方法X的使用效率更高,否则方法Y的使用效率更高。但是,这些方法有不同的成员变量要求。
std::conditional
的确切问题是什么?这似乎有点像一个。你想用这个模型做什么?我想根据对类的要求,在两种或更多不同的实现类的方法中选择更有效的方法。也就是说,当N小于4时,方法X的使用效率更高,否则方法Y的使用效率更高。然而,这些方法有不同的成员变量要求。
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;
};