142 template <
typename left_t,
typename right_t>
143 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
144 static constexpr auto add(left_t left, right_t right);
177 template <
typename left_t,
typename right_t>
178 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
179 static constexpr auto and_(left_t left, right_t right);
214 template <
typename left_t,
typename right_t>
215 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
216 static constexpr auto and_also(left_t left, right_t right);
250 template <
size_t index>
251 static constexpr auto arg();
284 template <
typename left_t,
typename right_t>
285 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
323 template <auto constant_value>
357 template <
typename left_t,
typename right_t>
358 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
359 static constexpr auto divide(left_t left, right_t right);
392 template <
typename left_t,
typename right_t>
393 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
394 static constexpr auto equal(left_t left, right_t right);
427 template <
typename left_t,
typename right_t>
428 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
462 template <
typename left_t,
typename right_t>
463 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
497 template <
typename left_t,
typename right_t>
498 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
499 static constexpr auto left_shift(left_t left, right_t right);
532 template <
typename left_t,
typename right_t>
533 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
534 static constexpr auto less_than(left_t left, right_t right);
567 template <
typename left_t,
typename right_t>
568 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
604 template <
typename left_t,
typename right_t>
605 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
631 template <
typename value_t>
632 requires std::is_base_of_v<expression, std::decay_t<value_t>>
668 template <
typename left_t,
typename right_t>
669 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
670 static constexpr auto logical_or(left_t left, right_t right);
703 template <
typename left_t,
typename right_t>
704 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
705 static constexpr auto modulo(left_t left, right_t right);
738 template <
typename left_t,
typename right_t>
739 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
740 static constexpr auto multiply(left_t left, right_t right);
765 template <
typename value_t>
766 requires std::is_base_of_v<expression, std::decay_t<value_t>>
792 template <
typename value_t>
793 requires std::is_base_of_v<expression, std::decay_t<value_t>>
827 template <
typename left_t,
typename right_t>
828 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
829 static constexpr auto not_equal(left_t left, right_t right);
862 template <
typename left_t,
typename right_t>
863 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
864 static constexpr auto or_(left_t left, right_t right);
899 template <
typename left_t,
typename right_t>
900 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
901 static constexpr auto or_else(left_t left, right_t right);
936 template <
size_t index>
970 template <
typename left_t,
typename right_t>
971 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
1005 template <
typename left_t,
typename right_t>
1006 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
1007 static constexpr auto spaceship(left_t left, right_t right);
1040 template <
typename left_t,
typename right_t>
1041 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
1042 static constexpr auto subtract(left_t left, right_t right);
1067 template <
typename value_t>
1068 requires std::is_base_of_v<expression, std::decay_t<value_t>>
1094 template <
typename value_t>
1095 requires std::is_base_of_v<expression, std::decay_t<value_t>>
1133 template <
typename type_t>
1167 template <
typename left_t,
typename right_t>
1168 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
1169 static constexpr auto xor_(left_t left, right_t right);
1176 expression() =
default;