mirror of
https://github.com/boostorg/multiprecision.git
synced 2026-07-21 13:23:49 +00:00
Fix most, but not yet all the gcc-9 failures.
This commit is contained in:
@@ -71,6 +71,7 @@ mp-run-simple has_float128.cpp quadmath : : : : has_float128 ;
|
||||
exe has_intel_quad : has_intel_quad.cpp : <cxxflags>-Qoption,cpp,--extended_float_type ;
|
||||
exe has_eigen : has_eigen.cpp ;
|
||||
obj has_is_constant_evaluated : has_is_constant_evaluated.cpp ;
|
||||
obj has_constexpr_limits : has_constexpr_limits_cmd.cpp : <cxxflags>-fconstexpr-ops-limit=268435456 ;
|
||||
|
||||
explicit has_gmp ;
|
||||
explicit has_mpfr ;
|
||||
@@ -81,5 +82,6 @@ explicit has_intel_quad ;
|
||||
explicit has_mpc ;
|
||||
explicit has_eigen ;
|
||||
explicit has_is_constant_evaluated ;
|
||||
explicit has_constexpr_limits ;
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
// Copyright John Maddock 2019.
|
||||
// Use, modification and distribution are subject to the
|
||||
// Boost Software License, Version 1.0. (See accompanying file
|
||||
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#ifndef __GNUC__
|
||||
#error "Compiler is not GCC"
|
||||
#endif
|
||||
#if __GNUC__ < 9
|
||||
#error "Older GCC versions don't support -fconstexpr-ops-limit"
|
||||
#endif
|
||||
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -345,7 +345,7 @@ class cpp_bin_float
|
||||
|
||||
template <class Float>
|
||||
typename boost::enable_if_c<
|
||||
(number_category<Float>::value == number_kind_floating_point) && !boost::is_floating_point<Float>::value && is_number<Float>::value,
|
||||
(number_category<Float>::value == number_kind_floating_point) && !boost::is_floating_point<Float>::value && (number_category<Float>::value == number_kind_floating_point),
|
||||
cpp_bin_float&>::type
|
||||
assign_float(Float f)
|
||||
{
|
||||
@@ -362,7 +362,7 @@ class cpp_bin_float
|
||||
{
|
||||
case FP_ZERO:
|
||||
m_data = limb_type(0);
|
||||
m_sign = ((boost::math::signbit)(f) > 0);
|
||||
m_sign = (eval_get_sign(f) > 0);
|
||||
m_exponent = exponent_zero;
|
||||
return *this;
|
||||
case FP_NAN:
|
||||
@@ -372,7 +372,7 @@ class cpp_bin_float
|
||||
return *this;
|
||||
case FP_INFINITE:
|
||||
m_data = limb_type(0);
|
||||
m_sign = (f < 0);
|
||||
m_sign = eval_get_sign(f) < 0;
|
||||
m_exponent = exponent_infinity;
|
||||
return *this;
|
||||
}
|
||||
@@ -409,16 +409,21 @@ class cpp_bin_float
|
||||
{
|
||||
m_data = limb_type(0u);
|
||||
m_exponent = exponent_zero;
|
||||
m_sign = ((boost::math::signbit)(f) > 0);
|
||||
m_sign = (eval_get_sign(f) > 0);
|
||||
}
|
||||
else if (eval_get_sign(m_data) == 0)
|
||||
{
|
||||
m_exponent = exponent_zero;
|
||||
m_sign = ((boost::math::signbit)(f) > 0);
|
||||
m_sign = (eval_get_sign(f) > 0);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
template <class B, expression_template_option et>
|
||||
cpp_bin_float& assign_float(const number<B, et>& f)
|
||||
{
|
||||
return assign_float(f.backend());
|
||||
}
|
||||
|
||||
template <class I>
|
||||
typename boost::enable_if<is_integral<I>, cpp_bin_float&>::type operator=(const I& i)
|
||||
{
|
||||
|
||||
@@ -444,7 +444,7 @@ inline BOOST_MP_CXX14_CONSTEXPR typename boost::disable_if_c<boost::is_same<T, U
|
||||
{
|
||||
T t;
|
||||
t = number<T>::canonical_value(u);
|
||||
return BOOST_MP_MOVE(t);
|
||||
return t;
|
||||
}
|
||||
template <class T>
|
||||
inline BOOST_MP_CXX14_CONSTEXPR const T& make_T(const T& t)
|
||||
@@ -2496,7 +2496,7 @@ inline BOOST_MP_CXX14_CONSTEXPR number<Backend, ExpressionTemplates> trunc(const
|
||||
detail::scoped_default_precision<multiprecision::number<Backend, ExpressionTemplates> > precision_guard(v);
|
||||
number<Backend, ExpressionTemplates> result;
|
||||
eval_trunc(result.backend(), v.backend());
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
template <class tag, class A1, class A2, class A3, class A4, class Policy>
|
||||
@@ -2595,7 +2595,7 @@ inline BOOST_MP_CXX14_CONSTEXPR number<T, ExpressionTemplates> round(const numbe
|
||||
detail::scoped_default_precision<multiprecision::number<T, ExpressionTemplates> > precision_guard(v);
|
||||
number<T, ExpressionTemplates> result;
|
||||
eval_round(result.backend(), v.backend());
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
template <class tag, class A1, class A2, class A3, class A4, class Policy>
|
||||
@@ -2693,7 +2693,7 @@ inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<T>::value =
|
||||
detail::scoped_default_precision<multiprecision::number<T, ExpressionTemplates> > precision_guard(v);
|
||||
number<T, ExpressionTemplates> result;
|
||||
eval_frexp(result.backend(), v.backend(), pint);
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
template <class tag, class A1, class A2, class A3, class A4>
|
||||
inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_floating_point, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type
|
||||
@@ -2709,7 +2709,7 @@ inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<T>::value =
|
||||
detail::scoped_default_precision<multiprecision::number<T, ExpressionTemplates> > precision_guard(v);
|
||||
number<T, ExpressionTemplates> result;
|
||||
eval_frexp(result.backend(), v.backend(), pint);
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
template <class tag, class A1, class A2, class A3, class A4>
|
||||
inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_floating_point, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type
|
||||
@@ -2725,7 +2725,7 @@ inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<T>::value =
|
||||
detail::scoped_default_precision<multiprecision::number<T, ExpressionTemplates> > precision_guard(v);
|
||||
number<T, ExpressionTemplates> result;
|
||||
eval_frexp(result.backend(), v.backend(), pint);
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
template <class tag, class A1, class A2, class A3, class A4>
|
||||
inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_floating_point, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type
|
||||
@@ -2741,7 +2741,7 @@ inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<T>::value =
|
||||
detail::scoped_default_precision<multiprecision::number<T, ExpressionTemplates> > precision_guard(v);
|
||||
number<T, ExpressionTemplates> result;
|
||||
eval_frexp(result.backend(), v.backend(), pint);
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
template <class tag, class A1, class A2, class A3, class A4>
|
||||
inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<typename detail::expression<tag, A1, A2, A3, A4>::result_type>::value == number_kind_floating_point, typename detail::expression<tag, A1, A2, A3, A4>::result_type>::type
|
||||
@@ -2762,7 +2762,7 @@ inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<T>::value =
|
||||
detail::scoped_default_precision<multiprecision::number<T, ExpressionTemplates> > precision_guard(v);
|
||||
number<T, ExpressionTemplates> result;
|
||||
eval_modf(result.backend(), v.backend(), pipart ? &pipart->backend() : 0);
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
template <class T, expression_template_option ExpressionTemplates, class tag, class A1, class A2, class A3, class A4>
|
||||
inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<T>::value == number_kind_floating_point, number<T, ExpressionTemplates> >::type modf(const detail::expression<tag, A1, A2, A3, A4>& v, number<T, ExpressionTemplates>* pipart)
|
||||
@@ -2771,7 +2771,7 @@ inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<number_category<T>::value =
|
||||
detail::scoped_default_precision<multiprecision::number<T, ExpressionTemplates> > precision_guard(v);
|
||||
number<T, ExpressionTemplates> result, arg(v);
|
||||
eval_modf(result.backend(), arg.backend(), pipart ? &pipart->backend() : 0);
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
@@ -2860,7 +2860,7 @@ fma(const number<Backend, et_off>& a, const U& b, const V& c)
|
||||
detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(a, b, c);
|
||||
number<Backend, et_off> result;
|
||||
eval_multiply_add(result.backend(), number<Backend, et_off>::canonical_value(a), number<Backend, et_off>::canonical_value(b), number<Backend, et_off>::canonical_value(c));
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
template <class U, class Backend, class V>
|
||||
@@ -2911,7 +2911,7 @@ fma(const U& a, const number<Backend, et_off>& b, const V& c)
|
||||
detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(a, b, c);
|
||||
number<Backend, et_off> result;
|
||||
eval_multiply_add(result.backend(), number<Backend, et_off>::canonical_value(a), number<Backend, et_off>::canonical_value(b), number<Backend, et_off>::canonical_value(c));
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
template <class U, class V, class Backend>
|
||||
@@ -2953,7 +2953,7 @@ fma(const U& a, const V& b, const number<Backend, et_off>& c)
|
||||
detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(a, b, c);
|
||||
number<Backend, et_off> result;
|
||||
eval_multiply_add(result.backend(), number<Backend, et_off>::canonical_value(a), number<Backend, et_off>::canonical_value(b), number<Backend, et_off>::canonical_value(c));
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
namespace default_ops {
|
||||
@@ -3019,7 +3019,7 @@ remquo(const number<Backend, et_off>& a, const U& b, int* pi)
|
||||
detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(a, b);
|
||||
number<Backend, et_off> result;
|
||||
eval_remquo(result.backend(), a.backend(), number<Backend, et_off>::canonical_value(b), pi);
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
template <class U, class Backend>
|
||||
inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c<
|
||||
@@ -3031,7 +3031,7 @@ remquo(const U& a, const number<Backend, et_off>& b, int* pi)
|
||||
detail::scoped_default_precision<multiprecision::number<Backend, et_off> > precision_guard(a, b);
|
||||
number<Backend, et_off> result;
|
||||
eval_remquo(result.backend(), number<Backend, et_off>::canonical_value(a), b.backend(), pi);
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
template <class B, expression_template_option ExpressionTemplates>
|
||||
@@ -3102,7 +3102,7 @@ sqrt(const number<B, ExpressionTemplates>& x, number<B, ExpressionTemplates>& r)
|
||||
using default_ops::BOOST_JOIN(eval_, func); \
|
||||
BOOST_JOIN(eval_, func) \
|
||||
(result.backend(), arg.backend()); \
|
||||
return BOOST_MP_MOVE(result); \
|
||||
return result; \
|
||||
}
|
||||
|
||||
#define BINARY_OP_FUNCTOR(func, category) \
|
||||
@@ -3264,7 +3264,7 @@ sqrt(const number<B, ExpressionTemplates>& x, number<B, ExpressionTemplates>& r)
|
||||
using default_ops::BOOST_JOIN(eval_, func); \
|
||||
BOOST_JOIN(eval_, func) \
|
||||
(result.backend(), arg.backend(), a.backend()); \
|
||||
return BOOST_MP_MOVE(result); \
|
||||
return result; \
|
||||
} \
|
||||
template <class Backend, class Arithmetic> \
|
||||
inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c< \
|
||||
@@ -3277,7 +3277,7 @@ sqrt(const number<B, ExpressionTemplates>& x, number<B, ExpressionTemplates>& r)
|
||||
using default_ops::BOOST_JOIN(eval_, func); \
|
||||
BOOST_JOIN(eval_, func) \
|
||||
(result.backend(), arg.backend(), number<Backend, et_off>::canonical_value(a)); \
|
||||
return BOOST_MP_MOVE(result); \
|
||||
return result; \
|
||||
} \
|
||||
template <class Backend, class Arithmetic> \
|
||||
inline BOOST_MP_CXX14_CONSTEXPR typename enable_if_c< \
|
||||
@@ -3290,7 +3290,7 @@ sqrt(const number<B, ExpressionTemplates>& x, number<B, ExpressionTemplates>& r)
|
||||
using default_ops::BOOST_JOIN(eval_, func); \
|
||||
BOOST_JOIN(eval_, func) \
|
||||
(result.backend(), number<Backend, et_off>::canonical_value(a), arg.backend()); \
|
||||
return BOOST_MP_MOVE(result); \
|
||||
return result; \
|
||||
}
|
||||
|
||||
#define HETERO_BINARY_OP_FUNCTOR_B(func, Arg2, category) \
|
||||
@@ -3329,7 +3329,7 @@ sqrt(const number<B, ExpressionTemplates>& x, number<B, ExpressionTemplates>& r)
|
||||
using default_ops::BOOST_JOIN(eval_, func); \
|
||||
BOOST_JOIN(eval_, func) \
|
||||
(result.backend(), arg.backend(), a); \
|
||||
return BOOST_MP_MOVE(result); \
|
||||
return result; \
|
||||
}
|
||||
|
||||
#define HETERO_BINARY_OP_FUNCTOR(func, Arg2, category) \
|
||||
@@ -3410,7 +3410,7 @@ abs(const number<Backend, et_off>& arg)
|
||||
number<Backend, et_off> result;
|
||||
using default_ops::eval_abs;
|
||||
eval_abs(result.backend(), arg.backend());
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
template <class tag, class A1, class A2, class A3, class A4>
|
||||
@@ -3439,7 +3439,7 @@ conj(const number<Backend, et_off>& arg)
|
||||
number<Backend, et_off> result;
|
||||
using default_ops::eval_conj;
|
||||
eval_conj(result.backend(), arg.backend());
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
template <class tag, class A1, class A2, class A3, class A4>
|
||||
@@ -3468,7 +3468,7 @@ proj(const number<Backend, et_off>& arg)
|
||||
number<Backend, et_off> result;
|
||||
using default_ops::eval_proj;
|
||||
eval_proj(result.backend(), arg.backend());
|
||||
return BOOST_MP_MOVE(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
UNARY_OP_FUNCTOR(fabs, number_kind_floating_point)
|
||||
|
||||
@@ -486,6 +486,7 @@ struct expression<tag, Arg1, void, void, void>
|
||||
typedef tag tag_type;
|
||||
|
||||
explicit BOOST_MP_CXX14_CONSTEXPR expression(const Arg1& a) : arg(a) {}
|
||||
BOOST_MP_CXX14_CONSTEXPR expression(const expression& e) : arg(e.arg) {}
|
||||
|
||||
#ifndef BOOST_NO_CXX11_STATIC_ASSERT
|
||||
//
|
||||
@@ -625,7 +626,7 @@ struct expression<tag, Arg1, void, void, void>
|
||||
template <class T
|
||||
#ifndef __SUNPRO_CC
|
||||
,
|
||||
typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value, int>::type = 0
|
||||
typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value || !is_constructible<T, result_type>::value, int>::type = 0
|
||||
#endif
|
||||
>
|
||||
explicit BOOST_MP_CXX14_CONSTEXPR operator T() const
|
||||
@@ -670,6 +671,7 @@ struct expression<terminal, Arg1, void, void, void>
|
||||
typedef terminal tag_type;
|
||||
|
||||
explicit BOOST_MP_CXX14_CONSTEXPR expression(const Arg1& a) : arg(a) {}
|
||||
BOOST_MP_CXX14_CONSTEXPR expression(const expression& e) : arg(e.arg) {}
|
||||
|
||||
#ifndef BOOST_NO_CXX11_STATIC_ASSERT
|
||||
//
|
||||
@@ -808,7 +810,7 @@ struct expression<terminal, Arg1, void, void, void>
|
||||
template <class T
|
||||
#ifndef __SUNPRO_CC
|
||||
,
|
||||
typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value, int>::type = 0
|
||||
typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value || !is_constructible<T, result_type>::value, int>::type = 0
|
||||
#endif
|
||||
>
|
||||
explicit BOOST_MP_CXX14_CONSTEXPR operator T() const
|
||||
@@ -856,6 +858,7 @@ struct expression<tag, Arg1, Arg2, void, void>
|
||||
typedef tag tag_type;
|
||||
|
||||
BOOST_MP_CXX14_CONSTEXPR expression(const Arg1& a1, const Arg2& a2) : arg1(a1), arg2(a2) {}
|
||||
BOOST_MP_CXX14_CONSTEXPR expression(const expression& e) : arg1(e.arg1), arg2(e.arg2) {}
|
||||
|
||||
#ifndef BOOST_NO_CXX11_STATIC_ASSERT
|
||||
//
|
||||
@@ -995,7 +998,7 @@ struct expression<tag, Arg1, Arg2, void, void>
|
||||
template <class T
|
||||
#ifndef __SUNPRO_CC
|
||||
,
|
||||
typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value, int>::type = 0
|
||||
typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value || !is_constructible<T, result_type>::value, int>::type = 0
|
||||
#endif
|
||||
>
|
||||
explicit BOOST_MP_CXX14_CONSTEXPR operator T() const
|
||||
@@ -1052,6 +1055,7 @@ struct expression<tag, Arg1, Arg2, Arg3, void>
|
||||
typedef tag tag_type;
|
||||
|
||||
BOOST_MP_CXX14_CONSTEXPR expression(const Arg1& a1, const Arg2& a2, const Arg3& a3) : arg1(a1), arg2(a2), arg3(a3) {}
|
||||
BOOST_MP_CXX14_CONSTEXPR expression(const expression& e) : arg1(e.arg1), arg2(e.arg2), arg3(e.arg3) {}
|
||||
|
||||
#ifndef BOOST_NO_CXX11_STATIC_ASSERT
|
||||
//
|
||||
@@ -1193,7 +1197,7 @@ struct expression<tag, Arg1, Arg2, Arg3, void>
|
||||
template <class T
|
||||
#ifndef __SUNPRO_CC
|
||||
,
|
||||
typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value, int>::type = 0
|
||||
typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value || !is_constructible<T, result_type>::value, int>::type = 0
|
||||
#endif
|
||||
>
|
||||
explicit BOOST_MP_CXX14_CONSTEXPR operator T() const
|
||||
@@ -1256,6 +1260,7 @@ struct expression
|
||||
typedef tag tag_type;
|
||||
|
||||
BOOST_MP_CXX14_CONSTEXPR expression(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) : arg1(a1), arg2(a2), arg3(a3), arg4(a4) {}
|
||||
BOOST_MP_CXX14_CONSTEXPR expression(const expression& e) : arg1(e.arg1), arg2(e.arg2), arg3(e.arg3), arg4(e.arg4) {}
|
||||
|
||||
#ifndef BOOST_NO_CXX11_STATIC_ASSERT
|
||||
//
|
||||
@@ -1399,7 +1404,7 @@ struct expression
|
||||
template <class T
|
||||
#ifndef __SUNPRO_CC
|
||||
,
|
||||
typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value, int>::type = 0
|
||||
typename boost::disable_if_c<is_number<T>::value || is_constructible<T const&, result_type>::value || !is_constructible<T, result_type>::value, int>::type = 0
|
||||
#endif
|
||||
>
|
||||
explicit BOOST_MP_CXX14_CONSTEXPR operator T() const
|
||||
|
||||
+1
-1
@@ -761,7 +761,7 @@ test-suite misc :
|
||||
[ run constexpr_test_cpp_int_3.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
|
||||
[ run constexpr_test_cpp_int_4.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
|
||||
[ run constexpr_test_cpp_int_5.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
|
||||
[ run constexpr_test_cpp_int_6.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
|
||||
[ run constexpr_test_cpp_int_6.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] [ check-target-builds ../config//has_constexpr_limits : <cxxflags>-fconstexpr-ops-limit=268435456 ] ]
|
||||
[ run constexpr_test_cpp_int_7.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
|
||||
|
||||
[ compile test_nothrow_cpp_int.cpp ]
|
||||
|
||||
@@ -93,3 +93,4 @@ int main()
|
||||
}
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
|
||||
@@ -263,3 +263,4 @@ int main()
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
|
||||
@@ -76,11 +76,11 @@ struct multiprecision_generator
|
||||
constexpr multiprecision_generator(std::uint64_t seed1, std::uint64_t seed2) : m_gen64(seed1, seed2) {}
|
||||
constexpr multiprecision_generator(std::uint64_t seed1, std::uint64_t seed2, std::uint64_t seed3) : m_gen64(seed1, seed2, seed3) {}
|
||||
|
||||
static constexpr result_type min()
|
||||
static constexpr result_type (min)()
|
||||
{
|
||||
return 0u;
|
||||
}
|
||||
static constexpr result_type max()
|
||||
static constexpr result_type (max)()
|
||||
{
|
||||
return ~result_type(0u);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user