C ++模板OR运算符?

时间:2016-10-27 11:30:50

标签: c++ templates

所以我在模板的参数中需要类似OR运算符的东西, 例如我想做以下事情:

template <typename T, typename F,
typename = std::enable_if<
!std::is_same<T, Node>::value> or !std::is_same<F, Node>::value>>

换句话说,当TF模板类之一不是Node时,我需要存在该函数。

但目前这给我编译错误。

PS:我已经对原始问题进行了编辑,以使其更加清晰。

2 个答案:

答案 0 :(得分:4)

您可以使用std::disjunction

std::enable_if<std::disjunction<a, b>::value>

但是,如评论中所述,ab必须为constexpr,而不是仅在运行时已知的值。

答案 1 :(得分:4)

如果您需要像或运算符之类的东西,那么请使用它!

std::enable_if<a || b>::type // <-- why wouldn't this work?

以下是coliru

的示例