145template<
typename TEnum>
150typename std::enable_if<alib::enums::T_EnumIsBitwise<TEnum>::value, TEnum>::type
154 using TBits=
typename std::underlying_type<TEnum>::type;
155 return TEnum(TBits(lhs) & TBits(rhs));
166template<
typename TEnum>
171typename std::enable_if<alib::enums::T_EnumIsBitwise<TEnum>::value, TEnum>::type
175 using TBits=
typename std::underlying_type<TEnum>::type;
176 return lhs= TEnum( TBits(lhs) & TBits(rhs) );
187template<
typename TEnum>
192typename std::enable_if<alib::enums::T_EnumIsBitwise<TEnum>::value, TEnum>::type
196 using TBits=
typename std::underlying_type<TEnum>::type;
197 return TEnum(TBits(lhs) | TBits(rhs));
208template<
typename TEnum>
213typename std::enable_if<alib::enums::T_EnumIsBitwise<TEnum>::value, TEnum>::type
217 using TBits=
typename std::underlying_type<TEnum>::type;
218 return lhs= TEnum( TBits(lhs) | TBits(rhs) );
229template<
typename TEnum>
234typename std::enable_if<alib::enums::T_EnumIsBitwise<TEnum>::value, TEnum>::type
238 using TBits=
typename std::underlying_type<TEnum>::type;
239 return TEnum(TBits(lhs) ^ TBits(rhs));
250template<
typename TEnum>
255typename std::enable_if<alib::enums::T_EnumIsBitwise<TEnum>::value, TEnum>::type
259 using TBits=
typename std::underlying_type<TEnum>::type;
260 return lhs= TEnum( TBits(lhs) ^ TBits(rhs) );
274template<
typename TEnum>
279typename std::enable_if<alib::enums::T_EnumIsBitwise<TEnum>::value, TEnum>::type
283 using TBits=
typename std::underlying_type<TEnum>::type;
284 return TEnum( ~ TBits(op) );
298template<
typename TEnum>
303typename std::enable_if< alib::enums::T_EnumIsBitwise <TEnum>::value
308 using TBits=
typename std::underlying_type<TEnum>::type;
309 return TEnum(TBits(lhs) | TBits(rhs));
322template<
typename TEnum>
327typename std::enable_if< alib::enums::T_EnumIsBitwise <TEnum>::value
332 using TBits=
typename std::underlying_type<TEnum>::type;
333 return lhs= TEnum( TBits(lhs) | TBits(rhs) );
349template<
typename TEnum>
354typename std::enable_if< alib::enums::T_EnumIsBitwise <TEnum>::value
359 using TBits=
typename std::underlying_type<TEnum>::type;
360 return TEnum( TBits(lhs) & (~TBits(rhs)) );
376template<
typename TEnum>
381typename std::enable_if< alib::enums::T_EnumIsBitwise <TEnum>::value
386 using TBits=
typename std::underlying_type<TEnum>::type;
387 return lhs= TEnum( TBits(lhs) & (~TBits(rhs)) );
408template<
typename TEnum>
410bool HasBits(TEnum element, TEnum selection)
noexcept;
412template<
typename TEnum>
415HasBits(TEnum element, TEnum selection)
noexcept
417 using TBits=
typename std::underlying_type<TEnum>::type;
418 return ( TBits(element) & TBits(selection) ) == TBits(selection);
436template<
typename TEnum>
438bool HasOneOf(TEnum element, TEnum selection)
noexcept;
440template<
typename TEnum>
443HasOneOf(TEnum element, TEnum selection)
noexcept
445 using TBits=
typename std::underlying_type<TEnum>::type;
446 return ( TBits(element) & TBits(selection) ) != TBits(0);
459template<
typename TEnum>
463template<
typename TEnum>