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 {
99 using TValue=
typename std::underlying_type<TEnum>::type;
100 return TValue(lhs) < rhs ;
114template<
typename TEnum>
116constexpr bool operator<= (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
117 using TValue=
typename std::underlying_type<TEnum>::type;
118 return TValue(lhs) <= rhs;
132template<
typename TEnum>
134constexpr bool operator> (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
135 using TValue=
typename std::underlying_type<TEnum>::type;
136 return TValue(lhs) > rhs;
150template<
typename TEnum>
152constexpr bool operator>= (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
153 using TValue=
typename std::underlying_type<TEnum>::type;
154 return TValue(lhs) >= rhs ;
168template<
typename TEnum>
170constexpr TEnum
operator+ (TEnum lhs, TEnum rhs)
noexcept {
171 using TValue=
typename std::underlying_type<TEnum>::type;
172 return TEnum( TValue(lhs) + TValue(rhs) );
185template<
typename TEnum>
187constexpr TEnum
operator+ (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
188 using TValue=
typename std::underlying_type<TEnum>::type;
189 return TEnum( TValue(lhs) + rhs );
203template<
typename TEnum>
206 using TValue=
typename std::underlying_type<TEnum>::type;
207 return lhs= TEnum( TValue(lhs) + TValue(rhs) );
220template<
typename TEnum>
222constexpr TEnum
operator+= (TEnum& lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
223 using TValue=
typename std::underlying_type<TEnum>::type;
224 return lhs= TEnum( TValue(lhs) + rhs );
236template<
typename TEnum>
239 using TValue=
typename std::underlying_type<TEnum>::type;
240 return arg= TEnum( TValue(arg) + 1 );
252template<
typename TEnum>
254constexpr TEnum
operator++ (TEnum& arg,
typename std::underlying_type<TEnum>::type)
noexcept {
255 using TValue=
typename std::underlying_type<TEnum>::type;
257 arg= TEnum( TValue(arg) + 1 );
271template<
typename TEnum>
273constexpr TEnum
operator- (TEnum lhs, TEnum rhs)
noexcept {
274 using TValue=
typename std::underlying_type<TEnum>::type;
275 return TEnum( TValue(lhs) - TValue(rhs) );
289template<
typename TEnum>
291constexpr TEnum
operator- (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
292 using TValue=
typename std::underlying_type<TEnum>::type;
293 return TEnum( TValue(lhs) - rhs );
306template<
typename TEnum>
309 using TValue=
typename std::underlying_type<TEnum>::type;
310 return lhs= TEnum( TValue(lhs) - TValue(rhs) );
323template<
typename TEnum>
325constexpr TEnum
operator-= (TEnum& lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
326 using TValue=
typename std::underlying_type<TEnum>::type;
327 return lhs= TEnum( TValue(lhs) - rhs );
339template<
typename TEnum>
342 using TValue=
typename std::underlying_type<TEnum>::type;
343 return arg= TEnum( TValue(arg) - 1 );
356template<
typename TEnum>
358constexpr TEnum
operator-- (TEnum& arg,
typename std::underlying_type<TEnum>::type)
noexcept {
359 using TValue=
typename std::underlying_type<TEnum>::type;
361 arg= TEnum( TValue(arg) - 1 );
374template<
typename TEnum>
376constexpr TEnum
operator+ (TEnum arg)
noexcept {
return arg; }
387template<
typename TEnum>
390 using TValue=
typename std::underlying_type<TEnum>::type;
391 return TEnum( - TValue(arg) );
405template<
typename TEnum>
407constexpr TEnum
operator* (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
408 using TValue=
typename std::underlying_type<TEnum>::type;
409 return TEnum( TValue(lhs) * rhs );
423template<
typename TEnum>
425constexpr TEnum
operator*= (TEnum& lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
426 using TValue=
typename std::underlying_type<TEnum>::type;
427 return lhs= TEnum( TValue(lhs) * rhs );
440template<
typename TEnum>
442constexpr TEnum
operator/ (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
443 using TValue=
typename std::underlying_type<TEnum>::type;
444 return TEnum( TValue(lhs) / rhs );
458template<
typename TEnum>
460constexpr TEnum
operator/= (TEnum& lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
461 using TValue=
typename std::underlying_type<TEnum>::type;
462 return lhs= TEnum( TValue(lhs) / rhs );
476template<
typename TEnum>
478constexpr TEnum
operator% (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
479 using TValue=
typename std::underlying_type<TEnum>::type;
480 return TEnum( TValue(lhs) % rhs );
494template<
typename TEnum>
496constexpr TEnum
operator%= (TEnum& lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
497 using TValue=
typename std::underlying_type<TEnum>::type;
498 return lhs= TEnum( TValue(lhs) % rhs );
512template<
typename TEnum>
514constexpr TEnum
operator<< (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
515 using TValue=
typename std::underlying_type<TEnum>::type;
516 return TEnum( TValue(lhs) << rhs );
529template<
typename TEnum>
531constexpr TEnum
operator<<= (TEnum& lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
532 using TValue=
typename std::underlying_type<TEnum>::type;
533 return lhs= TEnum( TValue(lhs) << rhs );
547template<
typename TEnum>
549constexpr TEnum
operator>> (TEnum lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
550 using TValue=
typename std::underlying_type<TEnum>::type;
551 return TEnum( TValue(lhs) << rhs );
565template<
typename TEnum>
567constexpr TEnum
operator>>= (TEnum& lhs,
typename std::underlying_type<TEnum>::type rhs)
noexcept {
568 using TValue=
typename std::underlying_type<TEnum>::type;
569 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