boost :: multiprecision :: float128和C ++ 11

时间:2014-08-18 13:59:44

标签: c++ c++11 boost

我正在尝试在C ++ 11(gcc 4.8.1)下使用boost::multiprecision::float128(boost 1.55.0),但得到以下编译器错误:

/cm/shared/apps/boost/gcc/1.55.0/include/boost/multiprecision/float128.hpp: In static member function ‘static std::numeric_limits<boost::multiprecision::number<boost::multiprecision::backends::float128_backend, ET> >::number_type std::numeric_limits<boost::multiprecision::number<boost::multiprecision::backends::float128_backend, ET> >::min()’:
/cm/shared/apps/boost/gcc/1.55.0/include/boost/multiprecision/float128.hpp:533:55: error: unable to find numeric literal operator ‘operator"" Q’
    static number_type (min)() BOOST_NOEXCEPT { return 3.36210314311209350626267781732175260e-4932Q; }

我不能在C ++ 11中使用boost::multiprecision::float128吗?或者我怎样才能让它发挥作用?

修改

只是澄清一下。

生成此错误
#include <boost/multiprecision/float128.hpp>

编译器对语句

不满意
return 3.36210314311209350626267781732175260e-4932Q;

特别是Q令人困惑。我使用了编译器标志-std=c++11 -fabi-version=0 -march=native -mfpmath=sse

1 个答案:

答案 0 :(得分:16)

It looks like a known issue。尝试使用-fext-numeric-literals进行编译。