diff --git a/include/boost/math/policies/policy.hpp b/include/boost/math/policies/policy.hpp index 68f1bef8dd..b233f8f914 100644 --- a/include/boost/math/policies/policy.hpp +++ b/include/boost/math/policies/policy.hpp @@ -493,6 +493,8 @@ class policy; }; +// When neither float nor double is promoted, policy<> already is the forwarding policy: +#if BOOST_MATH_PROMOTE_FLOAT_POLICY || BOOST_MATH_PROMOTE_DOUBLE_POLICY template <> struct policy { @@ -517,6 +519,7 @@ struct policy; using max_root_iterations_type = max_root_iterations<>; }; +#endif BOOST_MATH_EXPORT template , using type = policy; }; +#if BOOST_MATH_PROMOTE_FLOAT_POLICY || BOOST_MATH_PROMOTE_DOUBLE_POLICY template <> struct normalise, promote_float, @@ -666,6 +670,7 @@ struct normalise, { using type = policy; }; +#endif BOOST_MATH_EXPORT BOOST_MATH_GPU_ENABLED constexpr policy<> make_policy() noexcept { return {}; } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 359080af69..aec73a5d77 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -1041,6 +1041,7 @@ test-suite misc : [ run test_policy_7.cpp /boost/test//boost_unit_test_framework ] [ run test_policy_8.cpp /boost/test//boost_unit_test_framework ] [ compile test_policy_9.cpp ] + [ compile test_policy_9.cpp : BOOST_MATH_PROMOTE_FLOAT_POLICY=false BOOST_MATH_PROMOTE_DOUBLE_POLICY=false : test_policy_9_no_promotion ] [ run test_policy_10.cpp /boost/test//boost_unit_test_framework ] [ run test_policy_sf.cpp /boost/test//boost_unit_test_framework ] [ run test_long_double_support.cpp /boost/test//boost_unit_test_framework