Add operator| to enum_bitfields
This commit is contained in:
@@ -17,6 +17,15 @@ operator & (E lhs, E rhs)
|
|||||||
static_cast<typename std::underlying_type<E>::type>(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>
|
template <typename E>
|
||||||
typename std::enable_if<is_enum_bitfield<E>::value,E>::type
|
typename std::enable_if<is_enum_bitfield<E>::value,E>::type
|
||||||
operator ^ (E lhs, E rhs)
|
operator ^ (E lhs, E rhs)
|
||||||
@@ -72,3 +81,10 @@ operator ! (E rhs)
|
|||||||
{
|
{
|
||||||
return static_cast<typename std::underlying_type<E>::type>(rhs) == 0;
|
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;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user