I've found the solution. The problem is, as I suggested, that the unit in make_scaled_unit
must be a unit type, not a base unit. By replacing boost::units::metric::liter_base_unit
with boost::units::metric::liter_base_unit::unit_type
, it works.
The code becomes:
typedef boost::units::make_scaled_unit<
boost::units::metric::liter_base_unit::unit_type,
boost::units::scale<10, boost::units::static_rational<-3> >
>::type milliliter;