假设我有一个枚举:
typedef enum {
Val1,
Val2,
Val3,
Val4
} vals;
还有一个函数 check(vals x)
,它返回一个 bool 值,指示 val 是否在 vals
中的特定值子集中。
bool check(vals x) {
switch(x) {
case Val1:
case Val3:
return true;
}
return false;
}
我想将此函数用作 enable_if
的条件(如您所见,该函数不是取决于运行时的函数),让用户仅使用那些值类模板。
class MyClass<vals v> {
}
PS:我需要模板根据模板值对类的方法进行特化。
最佳答案
在 C++14 中,只需声明函数 constexpr
并保持实现不变。
在 C+11 中,您需要将其更改为单个 return 语句:
constexpr bool check(vals x) {
return x == Val1 || x == Val3;
}
关于c++ - 将 C++ std::enable_if 与普通函数一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37686133/