Skip to content

Commit c591ec5

Browse files
committed
Add bool template param
1 parent 7093330 commit c591ec5

File tree

7 files changed

+156
-164
lines changed

7 files changed

+156
-164
lines changed

include/boost/decimal/decimal128_t.hpp

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2230,8 +2230,8 @@ constexpr auto scalbnd128(decimal128_t num, const int expval) noexcept -> decima
22302230

22312231
namespace detail {
22322232

2233-
template <>
2234-
class numeric_limits_impl<boost::decimal::decimal128_t>
2233+
template <bool>
2234+
class numeric_limits_impl128
22352235
{
22362236
public:
22372237

@@ -2278,34 +2278,34 @@ class numeric_limits_impl<boost::decimal::decimal128_t>
22782278

22792279
#if !defined(__cpp_inline_variables) || __cpp_inline_variables < 201606L
22802280

2281-
constexpr bool numeric_limits_impl<decimal128_t>::is_specialized;
2282-
constexpr bool numeric_limits_impl<decimal128_t>::is_signed;
2283-
constexpr bool numeric_limits_impl<decimal128_t>::is_integer;
2284-
constexpr bool numeric_limits_impl<decimal128_t>::is_exact;
2285-
constexpr bool numeric_limits_impl<decimal128_t>::has_infinity;
2286-
constexpr bool numeric_limits_impl<decimal128_t>::has_quiet_NaN;
2287-
constexpr bool numeric_limits_impl<decimal128_t>::has_signaling_NaN;
2281+
template <bool b> constexpr bool numeric_limits_impl128<b>::is_specialized;
2282+
template <bool b> constexpr bool numeric_limits_impl128<b>::is_signed;
2283+
template <bool b> constexpr bool numeric_limits_impl128<b>::is_integer;
2284+
template <bool b> constexpr bool numeric_limits_impl128<b>::is_exact;
2285+
template <bool b> constexpr bool numeric_limits_impl128<b>::has_infinity;
2286+
template <bool b> constexpr bool numeric_limits_impl128<b>::has_quiet_NaN;
2287+
template <bool b> constexpr bool numeric_limits_impl128<b>::has_signaling_NaN;
22882288

22892289
// These members were deprecated in C++23
22902290
#if ((!defined(_MSC_VER) && (__cplusplus <= 202002L)) || (defined(_MSC_VER) && (_MSVC_LANG <= 202002L)))
2291-
constexpr std::float_denorm_style numeric_limits_impl<decimal128_t>::has_denorm;
2292-
constexpr bool numeric_limits_impl<decimal128_t>::has_denorm_loss;
2291+
template <bool b> constexpr std::float_denorm_style numeric_limits_impl128<b>::has_denorm;
2292+
template <bool b> constexpr bool numeric_limits_impl128<b>::has_denorm_loss;
22932293
#endif
22942294

2295-
constexpr std::float_round_style numeric_limits_impl<decimal128_t>::round_style;
2296-
constexpr bool numeric_limits_impl<decimal128_t>::is_iec559;
2297-
constexpr bool numeric_limits_impl<decimal128_t>::is_bounded;
2298-
constexpr bool numeric_limits_impl<decimal128_t>::is_modulo;
2299-
constexpr int numeric_limits_impl<decimal128_t>::digits;
2300-
constexpr int numeric_limits_impl<decimal128_t>::digits10;
2301-
constexpr int numeric_limits_impl<decimal128_t>::max_digits10;
2302-
constexpr int numeric_limits_impl<decimal128_t>::radix;
2303-
constexpr int numeric_limits_impl<decimal128_t>::min_exponent;
2304-
constexpr int numeric_limits_impl<decimal128_t>::min_exponent10;
2305-
constexpr int numeric_limits_impl<decimal128_t>::max_exponent;
2306-
constexpr int numeric_limits_impl<decimal128_t>::max_exponent10;
2307-
constexpr bool numeric_limits_impl<decimal128_t>::traps;
2308-
constexpr bool numeric_limits_impl<decimal128_t>::tinyness_before;
2295+
template <bool b> constexpr std::float_round_style numeric_limits_impl128<b>::round_style;
2296+
template <bool b> constexpr bool numeric_limits_impl128<b>::is_iec559;
2297+
template <bool b> constexpr bool numeric_limits_impl128<b>::is_bounded;
2298+
template <bool b> constexpr bool numeric_limits_impl128<b>::is_modulo;
2299+
template <bool b> constexpr int numeric_limits_impl128<b>::digits;
2300+
template <bool b> constexpr int numeric_limits_impl128<b>::digits10;
2301+
template <bool b> constexpr int numeric_limits_impl128<b>::max_digits10;
2302+
template <bool b> constexpr int numeric_limits_impl128<b>::radix;
2303+
template <bool b> constexpr int numeric_limits_impl128<b>::min_exponent;
2304+
template <bool b> constexpr int numeric_limits_impl128<b>::min_exponent10;
2305+
template <bool b> constexpr int numeric_limits_impl128<b>::max_exponent;
2306+
template <bool b> constexpr int numeric_limits_impl128<b>::max_exponent10;
2307+
template <bool b> constexpr bool numeric_limits_impl128<b>::traps;
2308+
template <bool b> constexpr bool numeric_limits_impl128<b>::tinyness_before;
23092309

23102310
#endif // !defined(__cpp_inline_variables) || __cpp_inline_variables < 201606L
23112311

@@ -2323,7 +2323,7 @@ namespace std {
23232323

23242324
template <>
23252325
class numeric_limits<boost::decimal::decimal128_t> :
2326-
public boost::decimal::detail::numeric_limits_impl<boost::decimal::decimal128_t> {};
2326+
public boost::decimal::detail::numeric_limits_impl128<true> {};
23272327

23282328
#ifdef __clang__
23292329
# pragma clang diagnostic pop

include/boost/decimal/decimal32_t.hpp

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2299,8 +2299,8 @@ constexpr auto copysignd32(decimal32_t mag, const decimal32_t sgn) noexcept -> d
22992299

23002300
namespace detail {
23012301

2302-
template <>
2303-
class numeric_limits_impl<decimal32_t>
2302+
template <bool>
2303+
class numeric_limits_impl32
23042304
{
23052305
public:
23062306

@@ -2348,34 +2348,34 @@ class numeric_limits_impl<decimal32_t>
23482348

23492349
#if !defined(__cpp_inline_variables) || __cpp_inline_variables < 201606L
23502350

2351-
constexpr bool numeric_limits_impl<decimal32_t>::is_specialized;
2352-
constexpr bool numeric_limits_impl<decimal32_t>::is_signed;
2353-
constexpr bool numeric_limits_impl<decimal32_t>::is_integer;
2354-
constexpr bool numeric_limits_impl<decimal32_t>::is_exact;
2355-
constexpr bool numeric_limits_impl<decimal32_t>::has_infinity;
2356-
constexpr bool numeric_limits_impl<decimal32_t>::has_quiet_NaN;
2357-
constexpr bool numeric_limits_impl<decimal32_t>::has_signaling_NaN;
2351+
template <bool b> constexpr bool numeric_limits_impl32<b>::is_specialized;
2352+
template <bool b> constexpr bool numeric_limits_impl32<b>::is_signed;
2353+
template <bool b> constexpr bool numeric_limits_impl32<b>::is_integer;
2354+
template <bool b> constexpr bool numeric_limits_impl32<b>::is_exact;
2355+
template <bool b> constexpr bool numeric_limits_impl32<b>::has_infinity;
2356+
template <bool b> constexpr bool numeric_limits_impl32<b>::has_quiet_NaN;
2357+
template <bool b> constexpr bool numeric_limits_impl32<b>::has_signaling_NaN;
23582358

23592359
// These members were deprecated in C++23
23602360
#if ((!defined(_MSC_VER) && (__cplusplus <= 202002L)) || (defined(_MSC_VER) && (_MSVC_LANG <= 202002L)))
2361-
constexpr std::float_denorm_style numeric_limits_impl<decimal32_t>::has_denorm;
2362-
constexpr bool numeric_limits_impl<decimal32_t>::has_denorm_loss;
2361+
template <bool b> constexpr std::float_denorm_style numeric_limits_impl32<b>::has_denorm;
2362+
template <bool b> constexpr bool numeric_limits_impl32<b>::has_denorm_loss;
23632363
#endif
23642364

2365-
constexpr std::float_round_style numeric_limits_impl<decimal32_t>::round_style;
2366-
constexpr bool numeric_limits_impl<decimal32_t>::is_iec559;
2367-
constexpr bool numeric_limits_impl<decimal32_t>::is_bounded;
2368-
constexpr bool numeric_limits_impl<decimal32_t>::is_modulo;
2369-
constexpr int numeric_limits_impl<decimal32_t>::digits;
2370-
constexpr int numeric_limits_impl<decimal32_t>::digits10;
2371-
constexpr int numeric_limits_impl<decimal32_t>::max_digits10;
2372-
constexpr int numeric_limits_impl<decimal32_t>::radix;
2373-
constexpr int numeric_limits_impl<decimal32_t>::min_exponent;
2374-
constexpr int numeric_limits_impl<decimal32_t>::min_exponent10;
2375-
constexpr int numeric_limits_impl<decimal32_t>::max_exponent;
2376-
constexpr int numeric_limits_impl<decimal32_t>::max_exponent10;
2377-
constexpr bool numeric_limits_impl<decimal32_t>::traps;
2378-
constexpr bool numeric_limits_impl<decimal32_t>::tinyness_before;
2365+
template <bool b> constexpr std::float_round_style numeric_limits_impl32<b>::round_style;
2366+
template <bool b> constexpr bool numeric_limits_impl32<b>::is_iec559;
2367+
template <bool b> constexpr bool numeric_limits_impl32<b>::is_bounded;
2368+
template <bool b> constexpr bool numeric_limits_impl32<b>::is_modulo;
2369+
template <bool b> constexpr int numeric_limits_impl32<b>::digits;
2370+
template <bool b> constexpr int numeric_limits_impl32<b>::digits10;
2371+
template <bool b> constexpr int numeric_limits_impl32<b>::max_digits10;
2372+
template <bool b> constexpr int numeric_limits_impl32<b>::radix;
2373+
template <bool b> constexpr int numeric_limits_impl32<b>::min_exponent;
2374+
template <bool b> constexpr int numeric_limits_impl32<b>::min_exponent10;
2375+
template <bool b> constexpr int numeric_limits_impl32<b>::max_exponent;
2376+
template <bool b> constexpr int numeric_limits_impl32<b>::max_exponent10;
2377+
template <bool b> constexpr bool numeric_limits_impl32<b>::traps;
2378+
template <bool b> constexpr bool numeric_limits_impl32<b>::tinyness_before;
23792379

23802380
#endif // !defined(__cpp_inline_variables) || __cpp_inline_variables < 201606L
23812381

@@ -2393,7 +2393,7 @@ namespace std {
23932393

23942394
template <>
23952395
class numeric_limits<boost::decimal::decimal32_t> :
2396-
public boost::decimal::detail::numeric_limits_impl<boost::decimal::decimal32_t> {};
2396+
public boost::decimal::detail::numeric_limits_impl32<true> {};
23972397

23982398
#ifdef __clang__
23992399
# pragma clang diagnostic pop

include/boost/decimal/decimal64_t.hpp

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2194,8 +2194,8 @@ constexpr auto copysignd64(decimal64_t mag, const decimal64_t sgn) noexcept -> d
21942194

21952195
namespace detail {
21962196

2197-
template <>
2198-
class numeric_limits_impl<boost::decimal::decimal64_t>
2197+
template <bool>
2198+
class numeric_limits_impl64
21992199
{
22002200
public:
22012201

@@ -2242,34 +2242,34 @@ class numeric_limits_impl<boost::decimal::decimal64_t>
22422242

22432243
#if !defined(__cpp_inline_variables) || __cpp_inline_variables < 201606L
22442244

2245-
constexpr bool numeric_limits_impl<decimal64_t>::is_specialized;
2246-
constexpr bool numeric_limits_impl<decimal64_t>::is_signed;
2247-
constexpr bool numeric_limits_impl<decimal64_t>::is_integer;
2248-
constexpr bool numeric_limits_impl<decimal64_t>::is_exact;
2249-
constexpr bool numeric_limits_impl<decimal64_t>::has_infinity;
2250-
constexpr bool numeric_limits_impl<decimal64_t>::has_quiet_NaN;
2251-
constexpr bool numeric_limits_impl<decimal64_t>::has_signaling_NaN;
2245+
template <bool b> constexpr bool numeric_limits_impl64<b>::is_specialized;
2246+
template <bool b> constexpr bool numeric_limits_impl64<b>::is_signed;
2247+
template <bool b> constexpr bool numeric_limits_impl64<b>::is_integer;
2248+
template <bool b> constexpr bool numeric_limits_impl64<b>::is_exact;
2249+
template <bool b> constexpr bool numeric_limits_impl64<b>::has_infinity;
2250+
template <bool b> constexpr bool numeric_limits_impl64<b>::has_quiet_NaN;
2251+
template <bool b> constexpr bool numeric_limits_impl64<b>::has_signaling_NaN;
22522252

22532253
// These members were deprecated in C++23
22542254
#if ((!defined(_MSC_VER) && (__cplusplus <= 202002L)) || (defined(_MSC_VER) && (_MSVC_LANG <= 202002L)))
2255-
constexpr std::float_denorm_style numeric_limits_impl<decimal64_t>::has_denorm;
2256-
constexpr bool numeric_limits_impl<decimal64_t>::has_denorm_loss;
2255+
template <bool b> constexpr std::float_denorm_style numeric_limits_impl64<b>::has_denorm;
2256+
template <bool b> constexpr bool numeric_limits_impl64<b>::has_denorm_loss;
22572257
#endif
22582258

2259-
constexpr std::float_round_style numeric_limits_impl<decimal64_t>::round_style;
2260-
constexpr bool numeric_limits_impl<decimal64_t>::is_iec559;
2261-
constexpr bool numeric_limits_impl<decimal64_t>::is_bounded;
2262-
constexpr bool numeric_limits_impl<decimal64_t>::is_modulo;
2263-
constexpr int numeric_limits_impl<decimal64_t>::digits;
2264-
constexpr int numeric_limits_impl<decimal64_t>::digits10;
2265-
constexpr int numeric_limits_impl<decimal64_t>::max_digits10;
2266-
constexpr int numeric_limits_impl<decimal64_t>::radix;
2267-
constexpr int numeric_limits_impl<decimal64_t>::min_exponent;
2268-
constexpr int numeric_limits_impl<decimal64_t>::min_exponent10;
2269-
constexpr int numeric_limits_impl<decimal64_t>::max_exponent;
2270-
constexpr int numeric_limits_impl<decimal64_t>::max_exponent10;
2271-
constexpr bool numeric_limits_impl<decimal64_t>::traps;
2272-
constexpr bool numeric_limits_impl<decimal64_t>::tinyness_before;
2259+
template <bool b> constexpr std::float_round_style numeric_limits_impl64<b>::round_style;
2260+
template <bool b> constexpr bool numeric_limits_impl64<b>::is_iec559;
2261+
template <bool b> constexpr bool numeric_limits_impl64<b>::is_bounded;
2262+
template <bool b> constexpr bool numeric_limits_impl64<b>::is_modulo;
2263+
template <bool b> constexpr int numeric_limits_impl64<b>::digits;
2264+
template <bool b> constexpr int numeric_limits_impl64<b>::digits10;
2265+
template <bool b> constexpr int numeric_limits_impl64<b>::max_digits10;
2266+
template <bool b> constexpr int numeric_limits_impl64<b>::radix;
2267+
template <bool b> constexpr int numeric_limits_impl64<b>::min_exponent;
2268+
template <bool b> constexpr int numeric_limits_impl64<b>::min_exponent10;
2269+
template <bool b> constexpr int numeric_limits_impl64<b>::max_exponent;
2270+
template <bool b> constexpr int numeric_limits_impl64<b>::max_exponent10;
2271+
template <bool b> constexpr bool numeric_limits_impl64<b>::traps;
2272+
template <bool b> constexpr bool numeric_limits_impl64<b>::tinyness_before;
22732273

22742274
#endif // !defined(__cpp_inline_variables) || __cpp_inline_variables < 201606L
22752275

@@ -2287,7 +2287,7 @@ namespace std {
22872287

22882288
template <>
22892289
class numeric_limits<boost::decimal::decimal64_t> :
2290-
public boost::decimal::detail::numeric_limits_impl<boost::decimal::decimal64_t> {};
2290+
public boost::decimal::detail::numeric_limits_impl64<true> {};
22912291

22922292
#ifdef __clang__
22932293
# pragma clang diagnostic pop

include/boost/decimal/decimal_fast128_t.hpp

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1579,8 +1579,8 @@ constexpr auto quantized128f(const decimal_fast128_t& lhs, const decimal_fast128
15791579

15801580
namespace detail {
15811581

1582-
template <>
1583-
class numeric_limits_impl<boost::decimal::decimal_fast128_t>
1582+
template <bool>
1583+
class numeric_limits_impl128f
15841584
{
15851585
public:
15861586

@@ -1627,34 +1627,34 @@ class numeric_limits_impl<boost::decimal::decimal_fast128_t>
16271627

16281628
#if !defined(__cpp_inline_variables) || __cpp_inline_variables < 201606L
16291629

1630-
constexpr bool numeric_limits_impl<decimal_fast128_t>::is_specialized;
1631-
constexpr bool numeric_limits_impl<decimal_fast128_t>::is_signed;
1632-
constexpr bool numeric_limits_impl<decimal_fast128_t>::is_integer;
1633-
constexpr bool numeric_limits_impl<decimal_fast128_t>::is_exact;
1634-
constexpr bool numeric_limits_impl<decimal_fast128_t>::has_infinity;
1635-
constexpr bool numeric_limits_impl<decimal_fast128_t>::has_quiet_NaN;
1636-
constexpr bool numeric_limits_impl<decimal_fast128_t>::has_signaling_NaN;
1630+
template <bool b> constexpr bool numeric_limits_impl128f<b>::is_specialized;
1631+
template <bool b> constexpr bool numeric_limits_impl128f<b>::is_signed;
1632+
template <bool b> constexpr bool numeric_limits_impl128f<b>::is_integer;
1633+
template <bool b> constexpr bool numeric_limits_impl128f<b>::is_exact;
1634+
template <bool b> constexpr bool numeric_limits_impl128f<b>::has_infinity;
1635+
template <bool b> constexpr bool numeric_limits_impl128f<b>::has_quiet_NaN;
1636+
template <bool b> constexpr bool numeric_limits_impl128f<b>::has_signaling_NaN;
16371637

16381638
// These members were deprecated in C++23
16391639
#if ((!defined(_MSC_VER) && (__cplusplus <= 202002L)) || (defined(_MSC_VER) && (_MSVC_LANG <= 202002L)))
1640-
constexpr std::float_denorm_style numeric_limits_impl<decimal_fast128_t>::has_denorm;
1641-
constexpr bool numeric_limits_impl<decimal_fast128_t>::has_denorm_loss;
1640+
template <bool b> constexpr std::float_denorm_style numeric_limits_impl128f<b>::has_denorm;
1641+
template <bool b> constexpr bool numeric_limits_impl128f<b>::has_denorm_loss;
16421642
#endif
16431643

1644-
constexpr std::float_round_style numeric_limits_impl<decimal_fast128_t>::round_style;
1645-
constexpr bool numeric_limits_impl<decimal_fast128_t>::is_iec559;
1646-
constexpr bool numeric_limits_impl<decimal_fast128_t>::is_bounded;
1647-
constexpr bool numeric_limits_impl<decimal_fast128_t>::is_modulo;
1648-
constexpr int numeric_limits_impl<decimal_fast128_t>::digits;
1649-
constexpr int numeric_limits_impl<decimal_fast128_t>::digits10;
1650-
constexpr int numeric_limits_impl<decimal_fast128_t>::max_digits10;
1651-
constexpr int numeric_limits_impl<decimal_fast128_t>::radix;
1652-
constexpr int numeric_limits_impl<decimal_fast128_t>::min_exponent;
1653-
constexpr int numeric_limits_impl<decimal_fast128_t>::min_exponent10;
1654-
constexpr int numeric_limits_impl<decimal_fast128_t>::max_exponent;
1655-
constexpr int numeric_limits_impl<decimal_fast128_t>::max_exponent10;
1656-
constexpr bool numeric_limits_impl<decimal_fast128_t>::traps;
1657-
constexpr bool numeric_limits_impl<decimal_fast128_t>::tinyness_before;
1644+
template <bool b> constexpr std::float_round_style numeric_limits_impl128f<b>::round_style;
1645+
template <bool b> constexpr bool numeric_limits_impl128f<b>::is_iec559;
1646+
template <bool b> constexpr bool numeric_limits_impl128f<b>::is_bounded;
1647+
template <bool b> constexpr bool numeric_limits_impl128f<b>::is_modulo;
1648+
template <bool b> constexpr int numeric_limits_impl128f<b>::digits;
1649+
template <bool b> constexpr int numeric_limits_impl128f<b>::digits10;
1650+
template <bool b> constexpr int numeric_limits_impl128f<b>::max_digits10;
1651+
template <bool b> constexpr int numeric_limits_impl128f<b>::radix;
1652+
template <bool b> constexpr int numeric_limits_impl128f<b>::min_exponent;
1653+
template <bool b> constexpr int numeric_limits_impl128f<b>::min_exponent10;
1654+
template <bool b> constexpr int numeric_limits_impl128f<b>::max_exponent;
1655+
template <bool b> constexpr int numeric_limits_impl128f<b>::max_exponent10;
1656+
template <bool b> constexpr bool numeric_limits_impl128f<b>::traps;
1657+
template <bool b> constexpr bool numeric_limits_impl128f<b>::tinyness_before;
16581658

16591659
#endif // !defined(__cpp_inline_variables) || __cpp_inline_variables < 201606L
16601660

@@ -1672,7 +1672,7 @@ namespace std {
16721672

16731673
template <>
16741674
class numeric_limits<boost::decimal::decimal_fast128_t> :
1675-
public boost::decimal::detail::numeric_limits_impl<boost::decimal::decimal_fast128_t> {};
1675+
public boost::decimal::detail::numeric_limits_impl128f<true> {};
16761676

16771677
#ifdef __clang__
16781678
# pragma clang diagnostic pop

0 commit comments

Comments
 (0)