21 template<auto left, auto right, 
typename compare_t>
 
   24     static_assert(compare_t()(left, right));
 
   27 template<auto left, auto right>
 
   30     static_assert(std::equal_to<>()(left, right), 
"!(left == right)");
 
   33 template<auto left, auto right>
 
   36     static_assert(std::not_equal_to<>()(left, right), 
"!(left != right)");
 
   39 template<auto left, auto right>
 
   42     static_assert(std::less<>()(left, right), 
"!(left < right)");
 
   45 template<auto left, auto right>
 
   48     static_assert(std::less_equal<>()(left, right), 
"!(left <= right)");
 
   51 template<auto left, auto right>
 
   54     static_assert(std::greater<>()(left, right), 
"!(left > right)");
 
   57 template<auto left, auto right>
 
   60     static_assert(std::greater_equal<>()(left, right), 
"!(left >= right)");
 
   63 template<auto left, auto value, auto right>
 
   66     static_assert(
qx::between(left, value, right), 
"value is not between right and left");
 
   74 #define QX_STATIC_ASSERT_EQ(left, right) \ 
   75     constexpr qx::details::static_assert_two<(left), (right), std::equal_to<>> QX_LINE_NAME(_static_assert_eq_) 
   77 #define QX_STATIC_ASSERT_NE(left, right) \ 
   78     constexpr qx::details::static_assert_two<(left), (right), std::not_equal_to<>> QX_LINE_NAME(_static_assert_nq_) 
   80 #define QX_STATIC_ASSERT_LT(left, right) \ 
   81     constexpr qx::details::static_assert_two<(left), (right), std::less<>> QX_LINE_NAME(_static_assert_lt_) 
   83 #define QX_STATIC_ASSERT_LE(left, right) \ 
   84     constexpr qx::details::static_assert_two<(left), (right), std::less_equal<>> QX_LINE_NAME(_static_assert_le_) 
   86 #define QX_STATIC_ASSERT_GT(left, right) \ 
   87     constexpr qx::details::static_assert_two<(left), (right), std::greater<>> QX_LINE_NAME(_static_assert_gt_) 
   89 #define QX_STATIC_ASSERT_GE(left, right) \ 
   90     constexpr qx::details::static_assert_two<(left), (right), std::greater_equal<>> QX_LINE_NAME(_static_assert_ge_) 
   99 #define QX_STATIC_ASSERT_BETWEEN(left, value, right) \ 
  100     qx::details::static_assert_between<(left), (value), (right)> QX_LINE_NAME(static_assert_between_) 
  131 #define QX_STATIC_ASSERT_NO_INSTANTIATION(Message) \ 
  132     []<bool flag = false>()                        \ 
  134         static_assert(flag, Message);              \ 
constexpr bool between(T left, T value, T right)
Checks if value is between left and right.