if (  decimals < std::numeric_limits<RealType>::min_exponent10 ||            std::numeric_limits<RealType>::max_exponent10 < decimals ) { throw std::domain_error("Invalid number of decimals."); }
round_to<RealType>::round_to(int decimals, rounding_style style)    :decimals_(decimals)    ,style_(style)    ,scale_fwd_(detail::perform_pow(max_prec_real(10.0), decimals))    ,scale_back_(max_prec_real(1.0) / scale_fwd_)    ,rounding_function(select_rounding_function(style)){    // This throws only if all use of the function object is invalid.    // Even if it doesn't throw, there are numbers that it cannot round    // without overflow, for instance    //    std::numeric_limits<RealType>::max()    // rounded to    //    std::numeric_limits<RealType>::max_exponent10    // decimals.    if        (  decimals < std::numeric_limits<RealType>::min_exponent10        ||            std::numeric_limits<RealType>::max_exponent10 < decimals        )        {        throw std::domain_error("Invalid number of decimals.");        }}