94 template <
size_t index>
108 template<
typename left_t,
typename right_t>
109 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
110 static constexpr auto add(left_t left, right_t right);
119 template<
typename left_t,
typename right_t>
120 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
121 static constexpr auto and_(left_t left, right_t right);
131 template<
typename left_t,
typename right_t>
132 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
133 static constexpr auto and_also(left_t left, right_t right);
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>>
152 template <auto constant_value>
162 template<
typename left_t,
typename right_t>
163 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
164 static constexpr auto divide(left_t left, right_t right);
197 template<
typename left_t,
typename right_t>
198 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
199 static constexpr auto equal(left_t left, right_t right);
232 template<
typename left_t,
typename right_t>
233 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
267 template<
typename left_t,
typename right_t>
268 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
302 template<
typename left_t,
typename right_t>
303 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
337 template<
typename left_t,
typename right_t>
338 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
339 static constexpr auto left_shift(left_t left, right_t right);
372 template<
typename left_t,
typename right_t>
373 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
374 static constexpr auto less_than(left_t left, right_t right);
407 template<
typename left_t,
typename right_t>
408 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
444 template<
typename left_t,
typename right_t>
445 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
471 template<
typename value_t>
472 requires std::is_base_of_v<expression, std::decay_t<value_t>>
508 template<
typename left_t,
typename right_t>
509 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
510 static constexpr auto logical_or(left_t left, right_t right);
543 template<
typename left_t,
typename right_t>
544 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
545 static constexpr auto modulo(left_t left, right_t right);
578 template<
typename left_t,
typename right_t>
579 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
580 static constexpr auto multiply(left_t left, right_t right);
605 template<
typename value_t>
606 requires std::is_base_of_v<expression, std::decay_t<value_t>>
632 template<
typename value_t>
633 requires std::is_base_of_v<expression, std::decay_t<value_t>>
667 template<
typename left_t,
typename right_t>
668 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
669 static constexpr auto not_equal(left_t left, right_t right);
702 template<
typename left_t,
typename right_t>
703 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
704 static constexpr auto or_(left_t left, right_t right);
739 template<
typename left_t,
typename right_t>
740 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
741 static constexpr auto or_else(left_t left, right_t right);
774 template<
typename left_t,
typename right_t>
775 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
809 template<
typename left_t,
typename right_t>
810 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
811 static constexpr auto spaceship(left_t left, right_t right);
844 template<
typename left_t,
typename right_t>
845 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
846 static constexpr auto subtract(left_t left, right_t right);
871 template<
typename value_t>
872 requires std::is_base_of_v<expression, std::decay_t<value_t>>
898 template<
typename value_t>
899 requires std::is_base_of_v<expression, std::decay_t<value_t>>
937 template<
typename type_t>
971 template<
typename left_t,
typename right_t>
972 requires std::is_base_of_v<expression, std::decay_t<left_t>> || std::is_base_of_v<expression, std::decay_t<right_t>>
973 static constexpr auto xor_(left_t left, right_t right);
980 expression() =
default;