
Hi, what is the best way to make boost.units work together with boost.interval. Something naive as boost::numeric::interval<boost::units::quantity<boost::units::si::energy>
iv(3.*boost::units::si::meter, 4.*boost::units::si::meter); doesn't compile because of an error in boost/numeric/interval/ checking.hpp (error attached below). A work around is to do a typedef suggest by http://lists.boost.org/boost-users/2009/07/49493.php typedef boost::numeric::interval_lib::change_checking< boost::numeric::interval< quantity<si::length> >, boost::units::interval::checking_base< quantity<si::length> > >::type interval_length_type; interval_length_type ival(3.*si::meter, 4.*si::meter); which compiles. do you think there is a better way?, that could allow for the first syntax at the beginning of this message. Thank you, Alfredo the compile error: /g/g91/correaa/usr/include/boost/numeric/interval/checking.hpp: In static member function 'static T boost::numeric::interval_lib::checking_base<T>::empty_lower() [with T = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-0x00000000000000001l, 1l> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::atomic::electron_mass_base_unit, boost::units::list<boost::units::atomic::elementary_charge_base_unit, boost::units::list<boost::units::atomic::reduced_planck_constant_base_unit, boost::units::list<boost::units::atomic::coulomb_force_constant_base_unit, boost::units::list<boost::units::atomic::boltzman_constant_base_unit, boost::units::dimensionless_type> > > > > >, void>, double>]': /g/g91/correaa/usr/include/boost/numeric/interval/checking.hpp:88: instantiated from 'static T boost::numeric::interval_lib::checking_no_empty<T, Checking, Exception>::empty_lower() [with T = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-0x00000000000000001l, 1l> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::atomic::electron_mass_base_unit, boost::units::list<boost::units::atomic::elementary_charge_base_unit, boost::units::list<boost::units::atomic::reduced_planck_constant_base_unit, boost::units::list<boost::units::atomic::coulomb_force_constant_base_unit, boost::units::list<boost::units::atomic::boltzman_constant_base_unit, boost::units::dimensionless_type> > > > > >, void>, double>, Checking = boost::numeric::interval_lib::checking_base<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-0x00000000000000001l, 1l> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::atomic::electron_mass_base_unit, boost::units::list<boost::units::atomic::elementary_charge_base_unit, boost::units::list<boost::units::atomic::reduced_planck_constant_base_unit, boost::units::list<boost::units::atomic::coulomb_force_constant_base_unit, boost::units::list<boost::units::atomic::boltzman_constant_base_unit, boost::units::dimensionless_type> > > > > >, void>, double> >, Exception = boost::numeric::interval_lib::exception_create_empty]' /g/g91/correaa/usr/include/boost/numeric/interval/interval.hpp:269: instantiated from 'void boost::numeric::interval<T, Policies>::set_empty() [with T = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-0x00000000000000001l, 1l> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::atomic::electron_mass_base_unit, boost::units::list<boost::units::atomic::elementary_charge_base_unit, boost::units::list<boost::units::atomic::reduced_planck_constant_base_unit, boost::units::list<boost::units::atomic::coulomb_force_constant_base_unit, boost::units::list<boost::units::atomic::boltzman_constant_base_unit, boost::units::dimensionless_type> > > > > >, void>, double>, Policies = boost::numeric::interval_lib::policies<boost::numeric::interval_lib::rounded_math<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-0x00000000000000001l, 1l> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::atomic::electron_mass_base_unit, boost::units::list<boost::units::atomic::elementary_charge_base_unit, boost::units::list<boost::units::atomic::reduced_planck_constant_base_unit, boost::units::list<boost::units::atomic::coulomb_force_constant_base_unit, boost::units::list<boost::units::atomic::boltzman_constant_base_unit, boost::units::dimensionless_type> > > > > >, void>, double> >, boost::numeric::interval_lib::checking_strict<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-0x00000000000000001l, 1l> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::atomic::electron_mass_base_unit, boost::units::list<boost::units::atomic::elementary_charge_base_unit, boost::units::list<boost::units::atomic::reduced_planck_constant_base_unit, boost::units::list<boost::units::atomic::coulomb_force_constant_base_unit, boost::units::list<boost::units::atomic::boltzman_constant_base_unit, boost::units::dimensionless_type> > > > > >, void>, double> > >]' /g/g91/correaa/usr/include/boost/numeric/interval/interval.hpp:171: instantiated from 'boost::numeric::interval<T, Policies>::interval(const T&, const T&) [with T = boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-0x00000000000000001l, 1l> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::atomic::electron_mass_base_unit, boost::units::list<boost::units::atomic::elementary_charge_base_unit, boost::units::list<boost::units::atomic::reduced_planck_constant_base_unit, boost::units::list<boost::units::atomic::coulomb_force_constant_base_unit, boost::units::list<boost::units::atomic::boltzman_constant_base_unit, boost::units::dimensionless_type> > > > > >, void>, double>, Policies = boost::numeric::interval_lib::policies<boost::numeric::interval_lib::rounded_math<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-0x00000000000000001l, 1l> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::atomic::electron_mass_base_unit, boost::units::list<boost::units::atomic::elementary_charge_base_unit, boost::units::list<boost::units::atomic::reduced_planck_constant_base_unit, boost::units::list<boost::units::atomic::coulomb_force_constant_base_unit, boost::units::list<boost::units::atomic::boltzman_constant_base_unit, boost::units::dimensionless_type> > > > > >, void>, double> >, boost::numeric::interval_lib::checking_strict<boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-0x00000000000000001l, 1l> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::atomic::electron_mass_base_unit, boost::units::list<boost::units::atomic::elementary_charge_base_unit, boost::units::list<boost::units::atomic::reduced_planck_constant_base_unit, boost::units::list<boost::units::atomic::coulomb_force_constant_base_unit, boost::units::list<boost::units::atomic::boltzman_constant_base_unit, boost::units::dimensionless_type> > > > > >, void>, double> > >]' lindhard.cpp:205: instantiated from here /g/g91/correaa/usr/include/boost/numeric/interval/checking.hpp:63: error: no matching function for call to 'boost::units::quantity<boost::units::unit<boost::units::list<boost::units::dim<boost::units::time_base_dimension, boost::units::static_rational<-0x00000000000000001l, 1l> >, boost::units::dimensionless_type>, boost::units::homogeneous_system<boost::units::list<boost::units::atomic::electron_mass_base_unit, boost::units::list<boost::units::atomic::elementary_charge_base_unit, boost::units::list<boost::units::atomic::reduced_planck_constant_base_unit, boost::units::list<boost::units::atomic::coulomb_force_constant_base_unit, boost::units::list<boost::units::atomic::boltzman_constant_base_unit, boost::units::dimensionless_type> > > > > >, void>, double>::quantity(int)' compilation terminated due to -Wfatal-errors.