@@ -161,6 +161,10 @@ BOOST_DECIMAL_EXPORT class decimal_fast32_t final
161161 template <typename Float, std::enable_if_t <detail::is_floating_point_v<Float>, bool > = true >
162162 explicit BOOST_DECIMAL_CXX20_CONSTEXPR decimal_fast32_t (Float val) noexcept ;
163163
164+ #ifdef BOOST_DECIMAL_UNSUPPORTED_LONG_DOUBLE
165+ explicit constexpr decimal_fast32_t (long double val) noexcept = delete;
166+ #endif
167+
164168 constexpr decimal_fast32_t (const decimal_fast32_t & val) noexcept = default;
165169 constexpr decimal_fast32_t (decimal_fast32_t && val) noexcept = default;
166170 constexpr auto operator =(const decimal_fast32_t & val) noexcept -> decimal_fast32_t & = default ;
@@ -336,7 +340,10 @@ BOOST_DECIMAL_EXPORT class decimal_fast32_t final
336340 // 3.2.6 Conversion to a floating-point type
337341 explicit BOOST_DECIMAL_CXX20_CONSTEXPR operator float () const noexcept ;
338342 explicit BOOST_DECIMAL_CXX20_CONSTEXPR operator double () const noexcept ;
343+
344+ #ifndef BOOST_DECIMAL_UNSUPPORTED_LONG_DOUBLE
339345 explicit BOOST_DECIMAL_CXX20_CONSTEXPR operator long double () const noexcept ;
346+ #endif
340347
341348 #ifdef BOOST_DECIMAL_HAS_FLOAT16
342349 explicit constexpr operator std::float16_t () const noexcept ;
@@ -1285,11 +1292,13 @@ BOOST_DECIMAL_CXX20_CONSTEXPR decimal_fast32_t::operator double() const noexcept
12851292 return to_float<decimal_fast32_t , double >(*this );
12861293}
12871294
1295+ #ifndef BOOST_DECIMAL_UNSUPPORTED_LONG_DOUBLE
12881296BOOST_DECIMAL_CXX20_CONSTEXPR decimal_fast32_t ::operator long double () const noexcept
12891297{
12901298 // The precision and range of double already exceeds what decimal_fast32_t can provide
12911299 return static_cast <long double >(to_float<decimal_fast32_t , double >(*this ));
12921300}
1301+ #endif
12931302
12941303#ifdef BOOST_DECIMAL_HAS_FLOAT16
12951304constexpr decimal_fast32_t ::operator std::float16_t () const noexcept
0 commit comments