我在Ubuntu 16.04系统上使用boost 1.58。
目前我正在使用提升单位。使用std::numeric_limits
时,我遗漏了一些必须链接的库。我必须链接哪个库?
// compiled with g++ test.cpp -std=c++11 -O0
#include <boost/units/limits.hpp>
#include <boost/units/quantity.hpp>
#include <boost/units/systems/si.hpp>
#include <boost/units/systems/si/length.hpp>
#include <boost/units/unit.hpp>
using boost::units::si::meters;
using Meter = boost::units::quantity<boost::units::si::length, double>;
int main() {
bool a1 = std::numeric_limits<Meter>::is_specialized;
bool const& a2 = std::numeric_limits<Meter>::is_specialized; // undefined reference to is_specialized
}
我得到的错误是:
$ g++test.cpp -std=c++11 -O0
/tmp/ccuHYpq5.o: In function `main':
test.cpp:(.text+0xb): undefined reference to `std::numeric_limits<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::length_base_dimension, boost::units::static_rational<1l, 1l> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost::units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10l, boost::units::static_rational<3l, 1l> > >, boost::units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::list<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit, boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > >, void>, double> >::is_specialized'
collect2: error: ld returned 1 exit status
这是一个助推错误吗?或者我错过了正确的头文件?