diff options
Diffstat (limited to 'boost/spirit/home/karma/numeric/detail/real_utils.hpp')
-rw-r--r-- | boost/spirit/home/karma/numeric/detail/real_utils.hpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/boost/spirit/home/karma/numeric/detail/real_utils.hpp b/boost/spirit/home/karma/numeric/detail/real_utils.hpp index 493cf3b1a7..6acaf87707 100644 --- a/boost/spirit/home/karma/numeric/detail/real_utils.hpp +++ b/boost/spirit/home/karma/numeric/detail/real_utils.hpp @@ -46,11 +46,11 @@ namespace boost { namespace spirit { namespace karma call (OutputIterator& sink, U n, Policies const& p = Policies()) { if (traits::test_nan(n)) { - return Policies::template nan<CharEncoding, Tag>( + return p.template nan<CharEncoding, Tag>( sink, n, p.force_sign(n)); } else if (traits::test_infinite(n)) { - return Policies::template inf<CharEncoding, Tag>( + return p.template inf<CharEncoding, Tag>( sink, n, p.force_sign(n)); } return p.template call<real_inserter>(sink, n, p); @@ -152,10 +152,12 @@ namespace boost { namespace spirit { namespace karma } // call the actual generating functions to output the different parts - if (sign_val && traits::test_zero(long_int_part) && + if ((force_sign || sign_val) && + traits::test_zero(long_int_part) && traits::test_zero(long_frac_part)) { sign_val = false; // result is zero, no sign please + force_sign = false; } // generate integer part |