以下代码
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <boost/multiprecision/cpp_int.hpp>
typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_off> float_50;
int main()
{
float_50 a = boost::multiprecision::pow((float_50)5, (float_50)10); // works
double b = boost::multiprecision::pow((double)5, (double)10); // doesn't work
//double b = boost::multiprecision::pow<double>((double)5, (double)10); // Why can't be overloaded?
return 0;
}
boost::multiprecision::pow
由于无法识别固定精度类型,因此无法编译。通常的解决方案是什么?我宁愿有一个pow
同时接受多精度和固定精度类型的函数。对我来说很奇怪 boost 常量,例如,有模板定义
boost::math::constants::pi<double>()
boost::math::constants::pi<float_50>()
工作正常。不应该boost::multiprecision::pow
也超载吗?