51template<
typename TEnum>
52requires std::is_enum<TEnum>::value
60template<
typename TEnum>
96template<
typename TEnum>
98constexpr bool operator< (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
100 using TValue=
typename std::underlying_type<TEnum>::type;
101 return TValue(lhs) < rhs ;
115template<
typename TEnum>
117constexpr bool operator<= (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
119 using TValue=
typename std::underlying_type<TEnum>::type;
120 return TValue(lhs) <= rhs;
134template<
typename TEnum>
136constexpr bool operator> (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
138 using TValue=
typename std::underlying_type<TEnum>::type;
139 return TValue(lhs) > rhs;
153template<
typename TEnum>
155constexpr bool operator>= (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
157 using TValue=
typename std::underlying_type<TEnum>::type;
158 return TValue(lhs) >= rhs ;
172template<
typename TEnum>
174constexpr TEnum
operator+ (TEnum lhs, TEnum rhs)
noexcept
176 using TValue=
typename std::underlying_type<TEnum>::type;
177 return TEnum( TValue(lhs) + TValue(rhs) );
190template<
typename TEnum>
192constexpr TEnum
operator+ (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
194 using TValue=
typename std::underlying_type<TEnum>::type;
195 return TEnum( TValue(lhs) + rhs );
209template<
typename TEnum>
213 using TValue=
typename std::underlying_type<TEnum>::type;
214 return lhs= TEnum( TValue(lhs) + TValue(rhs) );
227template<
typename TEnum>
229constexpr TEnum
operator+= (TEnum& lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
231 using TValue=
typename std::underlying_type<TEnum>::type;
232 return lhs= TEnum( TValue(lhs) + rhs );
244template<
typename TEnum>
248 using TValue=
typename std::underlying_type<TEnum>::type;
249 return arg= TEnum( TValue(arg) + 1 );
261template<
typename TEnum>
263constexpr TEnum
operator++ (TEnum& arg,
typename std::underlying_type<TEnum>::type)
noexcept
265 using TValue=
typename std::underlying_type<TEnum>::type;
267 arg= TEnum( TValue(arg) + 1 );
281template<
typename TEnum>
283constexpr TEnum
operator- (TEnum lhs, TEnum rhs)
noexcept
285 using TValue=
typename std::underlying_type<TEnum>::type;
286 return TEnum( TValue(lhs) - TValue(rhs) );
300template<
typename TEnum>
302constexpr TEnum
operator- (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
304 using TValue=
typename std::underlying_type<TEnum>::type;
305 return TEnum( TValue(lhs) - rhs );
318template<
typename TEnum>
322 using TValue=
typename std::underlying_type<TEnum>::type;
323 return lhs= TEnum( TValue(lhs) - TValue(rhs) );
336template<
typename TEnum>
338constexpr TEnum
operator-= (TEnum& lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
340 using TValue=
typename std::underlying_type<TEnum>::type;
341 return lhs= TEnum( TValue(lhs) - rhs );
353template<
typename TEnum>
357 using TValue=
typename std::underlying_type<TEnum>::type;
358 return arg= TEnum( TValue(arg) - 1 );
371template<
typename TEnum>
373constexpr TEnum
operator-- (TEnum& arg,
typename std::underlying_type<TEnum>::type)
noexcept
375 using TValue=
typename std::underlying_type<TEnum>::type;
377 arg= TEnum( TValue(arg) - 1 );
390template<
typename TEnum>
406template<
typename TEnum>
410 using TValue=
typename std::underlying_type<TEnum>::type;
411 return TEnum( - TValue(arg) );
425template<
typename TEnum>
427constexpr TEnum
operator* (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
429 using TValue=
typename std::underlying_type<TEnum>::type;
430 return TEnum( TValue(lhs) * rhs );
444template<
typename TEnum>
446constexpr TEnum
operator*= (TEnum& lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
448 using TValue=
typename std::underlying_type<TEnum>::type;
449 return lhs= TEnum( TValue(lhs) * rhs );
462template<
typename TEnum>
464constexpr TEnum
operator/ (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
466 using TValue=
typename std::underlying_type<TEnum>::type;
467 return TEnum( TValue(lhs) / rhs );
481template<
typename TEnum>
483constexpr TEnum
operator/= (TEnum& lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
485 using TValue=
typename std::underlying_type<TEnum>::type;
486 return lhs= TEnum( TValue(lhs) / rhs );
500template<
typename TEnum>
502constexpr TEnum
operator% (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
504 using TValue=
typename std::underlying_type<TEnum>::type;
505 return TEnum( TValue(lhs) % rhs );
519template<
typename TEnum>
521constexpr TEnum
operator%= (TEnum& lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
523 using TValue=
typename std::underlying_type<TEnum>::type;
524 return lhs= TEnum( TValue(lhs) % rhs );
538template<
typename TEnum>
540constexpr TEnum
operator<< (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
542 using TValue=
typename std::underlying_type<TEnum>::type;
543 return TEnum( TValue(lhs) << rhs );
556template<
typename TEnum>
558constexpr TEnum
operator<<= (TEnum& lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
560 using TValue=
typename std::underlying_type<TEnum>::type;
561 return lhs= TEnum( TValue(lhs) << rhs );
575template<
typename TEnum>
577constexpr TEnum
operator>> (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
579 using TValue=
typename std::underlying_type<TEnum>::type;
580 return TEnum( TValue(lhs) << rhs );
594template<
typename TEnum>
596constexpr TEnum
operator>>= (TEnum& lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept
598 using TValue=
typename std::underlying_type<TEnum>::type;
599 return lhs= TEnum( TValue(lhs) >> rhs );
#define ALIB_WARNINGS_RESTORE
#define ALIB_WARNINGS_IGNORE_DOCS
ALIB_EXPORT constexpr TEnum operator/=(TEnum &lhs, typename std::underlying_type< TEnum >::type rhs) noexcept
ALIB_EXPORT constexpr TEnum operator>>=(TEnum &lhs, typename std::underlying_type< TEnum >::type rhs) noexcept
ALIB_EXPORT constexpr bool operator>(TEnum lhs, typename std::underlying_type< TEnum >::type rhs) noexcept
ALIB_EXPORT constexpr TEnum operator*(TEnum lhs, typename std::underlying_type< TEnum >::type rhs) noexcept
ALIB_EXPORT constexpr bool operator>=(TEnum lhs, typename std::underlying_type< TEnum >::type rhs) noexcept
ALIB_EXPORT constexpr TEnum operator>>(TEnum lhs, typename std::underlying_type< TEnum >::type rhs) noexcept
ALIB_EXPORT constexpr TEnum operator+(TEnum lhs, TEnum rhs) noexcept
ALIB_EXPORT constexpr TEnum operator*=(TEnum &lhs, typename std::underlying_type< TEnum >::type rhs) noexcept
ALIB_EXPORT constexpr TEnum operator++(TEnum &arg) noexcept
ALIB_EXPORT constexpr bool operator<(TEnum lhs, typename std::underlying_type< TEnum >::type rhs) noexcept
ALIB_EXPORT constexpr TEnum operator%=(TEnum &lhs, typename std::underlying_type< TEnum >::type rhs) noexcept
ALIB_EXPORT constexpr TEnum operator+=(TEnum &lhs, TEnum rhs) noexcept
ALIB_EXPORT constexpr TEnum operator<<=(TEnum &lhs, typename std::underlying_type< TEnum >::type rhs) noexcept
ALIB_EXPORT constexpr bool operator<=(TEnum lhs, typename std::underlying_type< TEnum >::type rhs) noexcept
ALIB_EXPORT constexpr TEnum operator-=(TEnum &lhs, TEnum rhs) noexcept
ALIB_EXPORT constexpr TEnum operator%(TEnum lhs, typename std::underlying_type< TEnum >::type rhs) noexcept
ALIB_EXPORT constexpr TEnum operator<<(TEnum lhs, typename std::underlying_type< TEnum >::type rhs) noexcept
ALIB_EXPORT constexpr TEnum operator-(TEnum lhs, TEnum rhs) noexcept
ALIB_EXPORT constexpr TEnum operator/(TEnum lhs, typename std::underlying_type< TEnum >::type rhs) noexcept
ALIB_EXPORT constexpr TEnum operator--(TEnum &arg) noexcept