672 {
674
675 bool all_numeric = true;
678 bool has_float = false;
679 bool has_float_beyond_precision = false;
680
681 for (const auto& elem : arr) {
682 if (!elem) {
683 all_numeric = false;
684 break;
685 }
686
687 if (elem->is_int()) {
688 auto val = elem->as_int();
689 if (val) {
691 min_val = (v < min_val) ? v : min_val;
692 max_val = (v > max_val) ? v : max_val;
693 } else {
694 all_numeric = false;
695 break;
696 }
697 } else if (elem->is_float()) {
698 has_float = true;
699 auto val = elem->as_float();
700 if (!val) {
701 all_numeric = false;
702 break;
703 }
704
705
708 has_float_beyond_precision = true;
709 }
710 } else {
711 all_numeric = false;
712 break;
713 }
714 }
715
717
718
719 if (has_float) {
720
721 if (has_float_beyond_precision) {
723 }
725 }
726
727
728 if (min_val >= 0 && max_val <= 255) {
730 }
731
732 if (min_val >= -32768 && max_val <= 32767) {
734 }
735
736
737
738 if (min_val >= -16777216 && max_val <= 16777216) {
740 }
741
743}
bool empty() const FL_NO_EXCEPT
static bool float_bits_magnitude_exceeds_2_24(u32 bits) FL_NO_EXCEPT
To bit_cast(const From &from) FL_NO_EXCEPT
static constexpr T min() FL_NO_EXCEPT
static constexpr T max() FL_NO_EXCEPT