Add operator| to enum_bitfields

This commit is contained in:
Justin C. Miller
2018-04-21 02:47:37 -07:00
parent 818b51d57c
commit 799ad8b264

View File

@@ -17,6 +17,15 @@ operator & (E lhs, E rhs)
static_cast<typename std::underlying_type<E>::type>(rhs));
}
template <typename E>
typename std::enable_if<is_enum_bitfield<E>::value,E>::type
operator | (E lhs, E rhs)
{
return static_cast<E> (
static_cast<typename std::underlying_type<E>::type>(lhs) |
static_cast<typename std::underlying_type<E>::type>(rhs));
}
template <typename E>
typename std::enable_if<is_enum_bitfield<E>::value,E>::type
operator ^ (E lhs, E rhs)
@@ -72,3 +81,10 @@ operator ! (E rhs)
{
return static_cast<typename std::underlying_type<E>::type>(rhs) == 0;
}
template <typename E>
typename std::enable_if<is_enum_bitfield<E>::value,bool>::type
bitfield_contains(E set, E flag)
{
return (set & flag) == flag;
}