@@ -436,8 +436,8 @@ protected:
436
436
};
437
437
438
438
template <class _Tp >
439
- class _LIBCPP_TEMPLATE_VIS numeric_limits : private __libcpp_numeric_limits<__remove_cv_t < _Tp> > {
440
- typedef __libcpp_numeric_limits<__remove_cv_t < _Tp> > __base;
439
+ class _LIBCPP_TEMPLATE_VIS numeric_limits : private __libcpp_numeric_limits<_Tp> {
440
+ typedef __libcpp_numeric_limits<_Tp> __base;
441
441
typedef typename __base::type type;
442
442
443
443
public:
@@ -530,286 +530,13 @@ template <class _Tp>
530
530
_LIBCPP_CONSTEXPR const float_round_style numeric_limits<_Tp>::round_style;
531
531
532
532
template <class _Tp >
533
- class _LIBCPP_TEMPLATE_VIS numeric_limits<const _Tp> : private numeric_limits<_Tp> {
534
- typedef numeric_limits<_Tp> __base;
535
- typedef _Tp type;
536
-
537
- public:
538
- static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized;
539
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type min () _NOEXCEPT { return __base::min (); }
540
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type max () _NOEXCEPT { return __base::max (); }
541
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type lowest () _NOEXCEPT { return __base::lowest (); }
542
-
543
- static _LIBCPP_CONSTEXPR const int digits = __base::digits;
544
- static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10;
545
- static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10;
546
- static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed;
547
- static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer;
548
- static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact;
549
- static _LIBCPP_CONSTEXPR const int radix = __base::radix;
550
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type epsilon () _NOEXCEPT { return __base::epsilon (); }
551
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type round_error () _NOEXCEPT { return __base::round_error (); }
533
+ class _LIBCPP_TEMPLATE_VIS numeric_limits<const _Tp> : public numeric_limits<_Tp> {};
552
534
553
- static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent;
554
- static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10;
555
- static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent;
556
- static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10;
557
-
558
- static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity;
559
- static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN;
560
- static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN;
561
- _LIBCPP_SUPPRESS_DEPRECATED_PUSH
562
- static _LIBCPP_DEPRECATED_IN_CXX23 _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm;
563
- static _LIBCPP_DEPRECATED_IN_CXX23 _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss;
564
- _LIBCPP_SUPPRESS_DEPRECATED_POP
565
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type infinity () _NOEXCEPT { return __base::infinity (); }
566
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type quiet_NaN () _NOEXCEPT { return __base::quiet_NaN (); }
567
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type signaling_NaN () _NOEXCEPT { return __base::signaling_NaN (); }
568
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type denorm_min () _NOEXCEPT { return __base::denorm_min (); }
569
-
570
- static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559;
571
- static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded;
572
- static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo;
573
-
574
- static _LIBCPP_CONSTEXPR const bool traps = __base::traps;
575
- static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before;
576
- static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style;
577
- };
578
-
579
- template <class _Tp >
580
- _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_specialized;
581
- template <class _Tp >
582
- _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::digits;
583
- template <class _Tp >
584
- _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::digits10;
585
- template <class _Tp >
586
- _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_digits10;
587
- template <class _Tp >
588
- _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_signed;
589
- template <class _Tp >
590
- _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_integer;
591
- template <class _Tp >
592
- _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_exact;
593
- template <class _Tp >
594
- _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::radix;
595
535
template <class _Tp >
596
- _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::min_exponent;
597
- template <class _Tp >
598
- _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::min_exponent10;
599
- template <class _Tp >
600
- _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_exponent;
601
- template <class _Tp >
602
- _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_exponent10;
603
- template <class _Tp >
604
- _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_infinity;
605
- template <class _Tp >
606
- _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_quiet_NaN;
607
- template <class _Tp >
608
- _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_signaling_NaN;
609
- template <class _Tp >
610
- _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<const _Tp>::has_denorm;
611
- template <class _Tp >
612
- _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_denorm_loss;
613
- template <class _Tp >
614
- _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_iec559;
615
- template <class _Tp >
616
- _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_bounded;
617
- template <class _Tp >
618
- _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_modulo;
619
- template <class _Tp >
620
- _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::traps;
621
- template <class _Tp >
622
- _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::tinyness_before;
623
- template <class _Tp >
624
- _LIBCPP_CONSTEXPR const float_round_style numeric_limits<const _Tp>::round_style;
625
-
626
- template <class _Tp >
627
- class _LIBCPP_TEMPLATE_VIS numeric_limits<volatile _Tp> : private numeric_limits<_Tp> {
628
- typedef numeric_limits<_Tp> __base;
629
- typedef _Tp type;
630
-
631
- public:
632
- static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized;
633
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type min () _NOEXCEPT { return __base::min (); }
634
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type max () _NOEXCEPT { return __base::max (); }
635
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type lowest () _NOEXCEPT { return __base::lowest (); }
636
-
637
- static _LIBCPP_CONSTEXPR const int digits = __base::digits;
638
- static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10;
639
- static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10;
640
- static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed;
641
- static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer;
642
- static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact;
643
- static _LIBCPP_CONSTEXPR const int radix = __base::radix;
644
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type epsilon () _NOEXCEPT { return __base::epsilon (); }
645
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type round_error () _NOEXCEPT { return __base::round_error (); }
646
-
647
- static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent;
648
- static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10;
649
- static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent;
650
- static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10;
651
-
652
- static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity;
653
- static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN;
654
- static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN;
655
- _LIBCPP_SUPPRESS_DEPRECATED_PUSH
656
- static _LIBCPP_DEPRECATED_IN_CXX23 _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm;
657
- static _LIBCPP_DEPRECATED_IN_CXX23 _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss;
658
- _LIBCPP_SUPPRESS_DEPRECATED_POP
659
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type infinity () _NOEXCEPT { return __base::infinity (); }
660
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type quiet_NaN () _NOEXCEPT { return __base::quiet_NaN (); }
661
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type signaling_NaN () _NOEXCEPT { return __base::signaling_NaN (); }
662
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type denorm_min () _NOEXCEPT { return __base::denorm_min (); }
536
+ class _LIBCPP_TEMPLATE_VIS numeric_limits<volatile _Tp> : public numeric_limits<_Tp> {};
663
537
664
- static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559;
665
- static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded;
666
- static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo;
667
-
668
- static _LIBCPP_CONSTEXPR const bool traps = __base::traps;
669
- static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before;
670
- static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style;
671
- };
672
-
673
- template <class _Tp >
674
- _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_specialized;
675
- template <class _Tp >
676
- _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::digits;
677
- template <class _Tp >
678
- _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::digits10;
679
- template <class _Tp >
680
- _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_digits10;
681
- template <class _Tp >
682
- _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_signed;
683
- template <class _Tp >
684
- _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_integer;
685
- template <class _Tp >
686
- _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_exact;
687
- template <class _Tp >
688
- _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::radix;
689
- template <class _Tp >
690
- _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::min_exponent;
691
- template <class _Tp >
692
- _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::min_exponent10;
693
- template <class _Tp >
694
- _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_exponent;
695
- template <class _Tp >
696
- _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_exponent10;
697
- template <class _Tp >
698
- _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_infinity;
699
- template <class _Tp >
700
- _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_quiet_NaN;
701
- template <class _Tp >
702
- _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_signaling_NaN;
703
- template <class _Tp >
704
- _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<volatile _Tp>::has_denorm;
705
- template <class _Tp >
706
- _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_denorm_loss;
707
- template <class _Tp >
708
- _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_iec559;
709
- template <class _Tp >
710
- _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_bounded;
711
- template <class _Tp >
712
- _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_modulo;
713
- template <class _Tp >
714
- _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::traps;
715
- template <class _Tp >
716
- _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::tinyness_before;
717
- template <class _Tp >
718
- _LIBCPP_CONSTEXPR const float_round_style numeric_limits<volatile _Tp>::round_style;
719
-
720
- template <class _Tp >
721
- class _LIBCPP_TEMPLATE_VIS numeric_limits<const volatile _Tp> : private numeric_limits<_Tp> {
722
- typedef numeric_limits<_Tp> __base;
723
- typedef _Tp type;
724
-
725
- public:
726
- static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized;
727
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type min () _NOEXCEPT { return __base::min (); }
728
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type max () _NOEXCEPT { return __base::max (); }
729
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type lowest () _NOEXCEPT { return __base::lowest (); }
730
-
731
- static _LIBCPP_CONSTEXPR const int digits = __base::digits;
732
- static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10;
733
- static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10;
734
- static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed;
735
- static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer;
736
- static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact;
737
- static _LIBCPP_CONSTEXPR const int radix = __base::radix;
738
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type epsilon () _NOEXCEPT { return __base::epsilon (); }
739
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type round_error () _NOEXCEPT { return __base::round_error (); }
740
-
741
- static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent;
742
- static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10;
743
- static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent;
744
- static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10;
745
-
746
- static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity;
747
- static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN;
748
- static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN;
749
- _LIBCPP_SUPPRESS_DEPRECATED_PUSH
750
- static _LIBCPP_DEPRECATED_IN_CXX23 _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm;
751
- static _LIBCPP_DEPRECATED_IN_CXX23 _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss;
752
- _LIBCPP_SUPPRESS_DEPRECATED_POP
753
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type infinity () _NOEXCEPT { return __base::infinity (); }
754
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type quiet_NaN () _NOEXCEPT { return __base::quiet_NaN (); }
755
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type signaling_NaN () _NOEXCEPT { return __base::signaling_NaN (); }
756
- _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR type denorm_min () _NOEXCEPT { return __base::denorm_min (); }
757
-
758
- static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559;
759
- static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded;
760
- static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo;
761
-
762
- static _LIBCPP_CONSTEXPR const bool traps = __base::traps;
763
- static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before;
764
- static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style;
765
- };
766
-
767
- template <class _Tp >
768
- _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_specialized;
769
- template <class _Tp >
770
- _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::digits;
771
- template <class _Tp >
772
- _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::digits10;
773
- template <class _Tp >
774
- _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_digits10;
775
- template <class _Tp >
776
- _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_signed;
777
- template <class _Tp >
778
- _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_integer;
779
- template <class _Tp >
780
- _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_exact;
781
- template <class _Tp >
782
- _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::radix;
783
- template <class _Tp >
784
- _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::min_exponent;
785
- template <class _Tp >
786
- _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::min_exponent10;
787
- template <class _Tp >
788
- _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_exponent;
789
- template <class _Tp >
790
- _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_exponent10;
791
- template <class _Tp >
792
- _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_infinity;
793
- template <class _Tp >
794
- _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_quiet_NaN;
795
- template <class _Tp >
796
- _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_signaling_NaN;
797
- template <class _Tp >
798
- _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<const volatile _Tp>::has_denorm;
799
- template <class _Tp >
800
- _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_denorm_loss;
801
- template <class _Tp >
802
- _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_iec559;
803
- template <class _Tp >
804
- _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_bounded;
805
- template <class _Tp >
806
- _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_modulo;
807
- template <class _Tp >
808
- _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::traps;
809
- template <class _Tp >
810
- _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::tinyness_before;
811
538
template <class _Tp >
812
- _LIBCPP_CONSTEXPR const float_round_style numeric_limits<const volatile _Tp>::round_style ;
539
+ class _LIBCPP_TEMPLATE_VIS numeric_limits<const volatile _Tp> : public numeric_limits<_Tp> {} ;
813
540
814
541
_LIBCPP_END_NAMESPACE_STD
815
542
0 commit comments