Skip to content

Commit a32f657

Browse files
authored
Disable warnings from deprecated numeric_limits members. (#575)
Disable warnings from deprecated numeric_limits members. When building with MSVC in C++23 mode. Add test case.
1 parent c62ef57 commit a32f657

File tree

10 files changed

+235
-20
lines changed

10 files changed

+235
-20
lines changed

include/boost/multiprecision/cpp_bin_float.hpp

+14
Original file line numberDiff line numberDiff line change
@@ -2154,7 +2154,14 @@ class numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_bi
21542154
static constexpr bool has_infinity = true;
21552155
static constexpr bool has_quiet_NaN = true;
21562156
static constexpr bool has_signaling_NaN = false;
2157+
#ifdef _MSC_VER
2158+
#pragma warning(push)
2159+
#pragma warning(disable:4996)
2160+
#endif
21572161
static constexpr float_denorm_style has_denorm = denorm_absent;
2162+
#ifdef _MSC_VER
2163+
#pragma warning(pop)
2164+
#endif
21582165
static constexpr bool has_denorm_loss = false;
21592166
static number_type infinity()
21602167
{
@@ -2209,8 +2216,15 @@ template <unsigned Digits, boost::multiprecision::backends::digit_base_type Digi
22092216
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>, ExpressionTemplates> >::has_quiet_NaN;
22102217
template <unsigned Digits, boost::multiprecision::backends::digit_base_type DigitBase, class Allocator, class Exponent, Exponent MinE, Exponent MaxE, boost::multiprecision::expression_template_option ExpressionTemplates>
22112218
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>, ExpressionTemplates> >::has_signaling_NaN;
2219+
#ifdef _MSC_VER
2220+
#pragma warning(push)
2221+
#pragma warning(disable:4996)
2222+
#endif
22122223
template <unsigned Digits, boost::multiprecision::backends::digit_base_type DigitBase, class Allocator, class Exponent, Exponent MinE, Exponent MaxE, boost::multiprecision::expression_template_option ExpressionTemplates>
22132224
constexpr float_denorm_style numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>, ExpressionTemplates> >::has_denorm;
2225+
#ifdef _MSC_VER
2226+
#pragma warning(pop)
2227+
#endif
22142228
template <unsigned Digits, boost::multiprecision::backends::digit_base_type DigitBase, class Allocator, class Exponent, Exponent MinE, Exponent MaxE, boost::multiprecision::expression_template_option ExpressionTemplates>
22152229
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<Digits, DigitBase, Allocator, Exponent, MinE, MaxE>, ExpressionTemplates> >::has_denorm_loss;
22162230
template <unsigned Digits, boost::multiprecision::backends::digit_base_type DigitBase, class Allocator, class Exponent, Exponent MinE, Exponent MaxE, boost::multiprecision::expression_template_option ExpressionTemplates>

include/boost/multiprecision/cpp_dec_float.hpp

+14
Original file line numberDiff line numberDiff line change
@@ -3578,7 +3578,14 @@ class numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_de
35783578
static constexpr bool has_infinity = true;
35793579
static constexpr bool has_quiet_NaN = true;
35803580
static constexpr bool has_signaling_NaN = false;
3581+
#ifdef _MSC_VER
3582+
#pragma warning(push)
3583+
#pragma warning(disable : 4996)
3584+
#endif
35813585
static constexpr std::float_denorm_style has_denorm = std::denorm_absent;
3586+
#ifdef _MSC_VER
3587+
#pragma warning(pop)
3588+
#endif
35823589
static constexpr bool has_denorm_loss = false;
35833590
static constexpr bool traps = false;
35843591
static constexpr bool tinyness_before = false;
@@ -3622,8 +3629,15 @@ template <unsigned Digits10, class ExponentType, class Allocator, boost::multipr
36223629
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<Digits10, ExponentType, Allocator>, ExpressionTemplates> >::has_quiet_NaN;
36233630
template <unsigned Digits10, class ExponentType, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
36243631
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<Digits10, ExponentType, Allocator>, ExpressionTemplates> >::has_signaling_NaN;
3632+
#ifdef _MSC_VER
3633+
#pragma warning(push)
3634+
#pragma warning(disable : 4996)
3635+
#endif
36253636
template <unsigned Digits10, class ExponentType, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
36263637
constexpr float_denorm_style numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<Digits10, ExponentType, Allocator>, ExpressionTemplates> >::has_denorm;
3638+
#ifdef _MSC_VER
3639+
#pragma warning(pop)
3640+
#endif
36273641
template <unsigned Digits10, class ExponentType, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
36283642
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<Digits10, ExponentType, Allocator>, ExpressionTemplates> >::has_denorm_loss;
36293643
template <unsigned Digits10, class ExponentType, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>

include/boost/multiprecision/cpp_int/limits.hpp

+14
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,14 @@ class numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_in
200200
static constexpr bool has_infinity = false;
201201
static constexpr bool has_quiet_NaN = false;
202202
static constexpr bool has_signaling_NaN = false;
203+
#ifdef _MSC_VER
204+
#pragma warning(push)
205+
#pragma warning(disable:4996)
206+
#endif
203207
static constexpr float_denorm_style has_denorm = denorm_absent;
208+
#ifdef _MSC_VER
209+
#pragma warning(pop)
210+
#endif
204211
static constexpr bool has_denorm_loss = false;
205212
static BOOST_CXX14_CONSTEXPR_IF_DETECTION number_type infinity() { return 0; }
206213
static BOOST_CXX14_CONSTEXPR_IF_DETECTION number_type quiet_NaN() { return 0; }
@@ -242,8 +249,15 @@ template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_i
242249
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_quiet_NaN;
243250
template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
244251
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_signaling_NaN;
252+
#ifdef _MSC_VER
253+
#pragma warning(push)
254+
#pragma warning(disable:4996)
255+
#endif
245256
template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
246257
constexpr float_denorm_style numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_denorm;
258+
#ifdef _MSC_VER
259+
#pragma warning(pop)
260+
#endif
247261
template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>
248262
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>, ExpressionTemplates> >::has_denorm_loss;
249263
template <std::size_t MinBits, std::size_t MaxBits, boost::multiprecision::cpp_integer_type SignType, boost::multiprecision::cpp_int_check_type Checked, class Allocator, boost::multiprecision::expression_template_option ExpressionTemplates>

include/boost/multiprecision/float128.hpp

+16-2
Original file line numberDiff line numberDiff line change
@@ -835,8 +835,15 @@ class numeric_limits<boost::multiprecision::number<boost::multiprecision::backen
835835
static constexpr bool has_infinity = true;
836836
static constexpr bool has_quiet_NaN = true;
837837
static constexpr bool has_signaling_NaN = false;
838-
static constexpr float_denorm_style has_denorm = denorm_present;
839-
static constexpr bool has_denorm_loss = true;
838+
#ifdef _MSC_VER
839+
#pragma warning(push)
840+
#pragma warning(disable : 4996)
841+
#endif
842+
static constexpr float_denorm_style has_denorm = denorm_present;
843+
#ifdef _MSC_VER
844+
#pragma warning(pop)
845+
#endif
846+
static constexpr bool has_denorm_loss = true;
840847
static BOOST_MP_CXX14_CONSTEXPR number_type infinity() { return HUGE_VAL; /* conversion from double infinity OK */ }
841848
static BOOST_MP_CXX14_CONSTEXPR number_type quiet_NaN() { return number_type(NAN); }
842849
static BOOST_MP_CXX14_CONSTEXPR number_type signaling_NaN() { return 0; }
@@ -898,8 +905,15 @@ constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecisio
898905

899906
template <boost::multiprecision::expression_template_option ExpressionTemplates>
900907
constexpr float_round_style numeric_limits<boost::multiprecision::number<boost::multiprecision::backends::float128_backend, ExpressionTemplates> >::round_style;
908+
#ifdef _MSC_VER
909+
#pragma warning(push)
910+
#pragma warning(disable : 4996)
911+
#endif
901912
template <boost::multiprecision::expression_template_option ExpressionTemplates>
902913
constexpr float_denorm_style numeric_limits<boost::multiprecision::number<boost::multiprecision::backends::float128_backend, ExpressionTemplates> >::has_denorm;
914+
#ifdef _MSC_VER
915+
#pragma warning(pop)
916+
#endif
903917

904918
} // namespace std
905919

include/boost/multiprecision/gmp.hpp

+64-8
Original file line numberDiff line numberDiff line change
@@ -3590,8 +3590,15 @@ class numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_fl
35903590
static constexpr bool has_infinity = false;
35913591
static constexpr bool has_quiet_NaN = false;
35923592
static constexpr bool has_signaling_NaN = false;
3593-
static constexpr float_denorm_style has_denorm = denorm_absent;
3594-
static constexpr bool has_denorm_loss = false;
3593+
#ifdef _MSC_VER
3594+
#pragma warning(push)
3595+
#pragma warning(disable : 4996)
3596+
#endif
3597+
static constexpr float_denorm_style has_denorm = denorm_absent;
3598+
#ifdef _MSC_VER
3599+
#pragma warning(pop)
3600+
#endif
3601+
static constexpr bool has_denorm_loss = false;
35953602
static constexpr number_type infinity() { return number_type(); }
35963603
static constexpr number_type quiet_NaN() { return number_type(); }
35973604
static constexpr number_type signaling_NaN() { return number_type(); }
@@ -3632,8 +3639,15 @@ template <unsigned Digits10, boost::multiprecision::expression_template_option E
36323639
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_float<Digits10>, ExpressionTemplates> >::has_quiet_NaN;
36333640
template <unsigned Digits10, boost::multiprecision::expression_template_option ExpressionTemplates>
36343641
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_float<Digits10>, ExpressionTemplates> >::has_signaling_NaN;
3642+
#ifdef _MSC_VER
3643+
#pragma warning(push)
3644+
#pragma warning(disable : 4996)
3645+
#endif
36353646
template <unsigned Digits10, boost::multiprecision::expression_template_option ExpressionTemplates>
36363647
constexpr float_denorm_style numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_float<Digits10>, ExpressionTemplates> >::has_denorm;
3648+
#ifdef _MSC_VER
3649+
#pragma warning(pop)
3650+
#endif
36373651
template <unsigned Digits10, boost::multiprecision::expression_template_option ExpressionTemplates>
36383652
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_float<Digits10>, ExpressionTemplates> >::has_denorm_loss;
36393653
template <unsigned Digits10, boost::multiprecision::expression_template_option ExpressionTemplates>
@@ -3675,8 +3689,15 @@ class numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_fl
36753689
static constexpr bool has_infinity = false;
36763690
static constexpr bool has_quiet_NaN = false;
36773691
static constexpr bool has_signaling_NaN = false;
3678-
static constexpr float_denorm_style has_denorm = denorm_absent;
3679-
static constexpr bool has_denorm_loss = false;
3692+
#ifdef _MSC_VER
3693+
#pragma warning(push)
3694+
#pragma warning(disable : 4996)
3695+
#endif
3696+
static constexpr float_denorm_style has_denorm = denorm_absent;
3697+
#ifdef _MSC_VER
3698+
#pragma warning(pop)
3699+
#endif
3700+
static constexpr bool has_denorm_loss = false;
36803701
static number_type infinity() { return number_type(); }
36813702
static number_type quiet_NaN() { return number_type(); }
36823703
static number_type signaling_NaN() { return number_type(); }
@@ -3717,8 +3738,15 @@ template <boost::multiprecision::expression_template_option ExpressionTemplates>
37173738
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_float<0>, ExpressionTemplates> >::has_quiet_NaN;
37183739
template <boost::multiprecision::expression_template_option ExpressionTemplates>
37193740
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_float<0>, ExpressionTemplates> >::has_signaling_NaN;
3741+
#ifdef _MSC_VER
3742+
#pragma warning(push)
3743+
#pragma warning(disable : 4996)
3744+
#endif
37203745
template <boost::multiprecision::expression_template_option ExpressionTemplates>
37213746
constexpr float_denorm_style numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_float<0>, ExpressionTemplates> >::has_denorm;
3747+
#ifdef _MSC_VER
3748+
#pragma warning(pop)
3749+
#endif
37223750
template <boost::multiprecision::expression_template_option ExpressionTemplates>
37233751
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_float<0>, ExpressionTemplates> >::has_denorm_loss;
37243752
template <boost::multiprecision::expression_template_option ExpressionTemplates>
@@ -3770,8 +3798,15 @@ class numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_in
37703798
static constexpr bool has_infinity = false;
37713799
static constexpr bool has_quiet_NaN = false;
37723800
static constexpr bool has_signaling_NaN = false;
3773-
static constexpr float_denorm_style has_denorm = denorm_absent;
3774-
static constexpr bool has_denorm_loss = false;
3801+
#ifdef _MSC_VER
3802+
#pragma warning(push)
3803+
#pragma warning(disable : 4996)
3804+
#endif
3805+
static constexpr float_denorm_style has_denorm = denorm_absent;
3806+
#ifdef _MSC_VER
3807+
#pragma warning(pop)
3808+
#endif
3809+
static constexpr bool has_denorm_loss = false;
37753810
static number_type infinity() { return number_type(); }
37763811
static number_type quiet_NaN() { return number_type(); }
37773812
static number_type signaling_NaN() { return number_type(); }
@@ -3812,8 +3847,15 @@ template <boost::multiprecision::expression_template_option ExpressionTemplates>
38123847
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_int, ExpressionTemplates> >::has_quiet_NaN;
38133848
template <boost::multiprecision::expression_template_option ExpressionTemplates>
38143849
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_int, ExpressionTemplates> >::has_signaling_NaN;
3850+
#ifdef _MSC_VER
3851+
#pragma warning(push)
3852+
#pragma warning(disable : 4996)
3853+
#endif
38153854
template <boost::multiprecision::expression_template_option ExpressionTemplates>
38163855
constexpr float_denorm_style numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_int, ExpressionTemplates> >::has_denorm;
3856+
#ifdef _MSC_VER
3857+
#pragma warning(pop)
3858+
#endif
38173859
template <boost::multiprecision::expression_template_option ExpressionTemplates>
38183860
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_int, ExpressionTemplates> >::has_denorm_loss;
38193861
template <boost::multiprecision::expression_template_option ExpressionTemplates>
@@ -3866,8 +3908,15 @@ class numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_ra
38663908
static constexpr bool has_infinity = false;
38673909
static constexpr bool has_quiet_NaN = false;
38683910
static constexpr bool has_signaling_NaN = false;
3869-
static constexpr float_denorm_style has_denorm = denorm_absent;
3870-
static constexpr bool has_denorm_loss = false;
3911+
#ifdef _MSC_VER
3912+
#pragma warning(push)
3913+
#pragma warning(disable : 4996)
3914+
#endif
3915+
static constexpr float_denorm_style has_denorm = denorm_absent;
3916+
#ifdef _MSC_VER
3917+
#pragma warning(pop)
3918+
#endif
3919+
static constexpr bool has_denorm_loss = false;
38713920
static number_type infinity() { return number_type(); }
38723921
static number_type quiet_NaN() { return number_type(); }
38733922
static number_type signaling_NaN() { return number_type(); }
@@ -3908,8 +3957,15 @@ template <boost::multiprecision::expression_template_option ExpressionTemplates>
39083957
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_rational, ExpressionTemplates> >::has_quiet_NaN;
39093958
template <boost::multiprecision::expression_template_option ExpressionTemplates>
39103959
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_rational, ExpressionTemplates> >::has_signaling_NaN;
3960+
#ifdef _MSC_VER
3961+
#pragma warning(push)
3962+
#pragma warning(disable : 4996)
3963+
#endif
39113964
template <boost::multiprecision::expression_template_option ExpressionTemplates>
39123965
constexpr float_denorm_style numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_rational, ExpressionTemplates> >::has_denorm;
3966+
#ifdef _MSC_VER
3967+
#pragma warning(pop)
3968+
#endif
39133969
template <boost::multiprecision::expression_template_option ExpressionTemplates>
39143970
constexpr bool numeric_limits<boost::multiprecision::number<boost::multiprecision::gmp_rational, ExpressionTemplates> >::has_denorm_loss;
39153971
template <boost::multiprecision::expression_template_option ExpressionTemplates>

0 commit comments

Comments
 (0)