假设我有一个枚举:
typedef enum {
Val1,
Val2,
Val3,
Val4
} vals;
Run Code Online (Sandbox Code Playgroud)
并且函数check(vals x)
返回一个布尔值,指示val是否在特定的值子集中vals
.
bool check(vals x) {
switch(x) {
case Val1:
case Val3:
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我想使用这个函数作为enable_if
(函数,你可以看到,它不是一个函数,取决于运行时)的条件,让用户只使用这些值与类模板.
class MyClass<vals v> {
}
Run Code Online (Sandbox Code Playgroud)
PS:我需要模板来为类的方法进行特化,具体取决于模板值.
在C++ 14中,只需声明函数constexpr
并保持实现不变.
在C + 11中,您需要将其更改为单个return语句:
constexpr bool check(vals x) {
return x == Val1 || x == Val3;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
135 次 |
最近记录: |