c++模板OR操作符

C++ template OR operator?

本文关键字:操作符 OR 模板 c++      更新时间:2023-10-16

所以我需要一个类似于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:我已经编辑了原来的问题,使它更清楚。

如果您需要类似于或操作符的东西,那么就使用它!

std::enable_if<a || b>::type // <-- why wouldn't this work?
下面是coliru
的例子

您可以使用std::disjunction

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

但是,正如评论中提到的,ab必须是constexpr,而不是只有在运行时才知道的值。