Boost Multiprecision float128:std :: exp错误:'没有匹配的调用函数'

时间:2018-07-10 09:39:54

标签: c++ boost

#include <iostream>
#include <math.h>

/*
Boost Lib: https://www.boost.org
added compiler options:
                        -fext-numeric-literals
*/
#include <boost/multiprecision/float128.hpp>
using namespace boost::multiprecision;

int main(){
    float128 x = 34235235.00090912892709;
    float128 z = std::exp(x);
    std::cout<< z;

return 0;
}

给出以下错误:

error: no matching function for call to ‘exp(boost::multiprecision::float128&)’

Boost应该能够使用任何C ++ std lib函数;我的错误在哪里?

1 个答案:

答案 0 :(得分:3)

  

Boost应该能够使用任何C ++ std lib函数

那正是你的错误。您可以将func handleLongPressDuration(_ sender: LongPressDurationGestureRecognizer) { print(sender.duration) } 类型转换为双精度类型并将其传递给float128,但是由于您可能出于某种原因使用多精度库,所以这可能不是一个好主意。而是调用boost本身提供的函数:

std::exp

您可能希望省略const auto z = boost::multiprecision::exp(x); 并在示例中依赖ADL或using指令。为此,可能需要添加boost::multiprecision::和/或-lquadmath链接器标志(感谢@JHBonarius指出)。