| 165 | }; |
| 166 | |
| 167 | struct CompareVisitor { |
| 168 | explicit constexpr CompareVisitor(NumberVariant rhs) : rhs(rhs) {} |
| 169 | |
| 170 | CEL_ABSL_VISIT_CONSTEXPR ComparisonResult operator()(double v) { |
| 171 | return absl::visit(DoubleCompareVisitor(v), rhs); |
| 172 | } |
| 173 | |
| 174 | CEL_ABSL_VISIT_CONSTEXPR ComparisonResult operator()(uint64_t v) { |
| 175 | return absl::visit(UintCompareVisitor(v), rhs); |
| 176 | } |
| 177 | |
| 178 | CEL_ABSL_VISIT_CONSTEXPR ComparisonResult operator()(int64_t v) { |
| 179 | return absl::visit(IntCompareVisitor(v), rhs); |
| 180 | } |
| 181 | NumberVariant rhs; |
| 182 | }; |
| 183 | |
| 184 | struct LosslessConvertibleToIntVisitor { |
| 185 | constexpr bool operator()(double value) const { |