template <class d1, class d2>
struct divide_dimensions
: mpl::transform<d1,d2,mpl::minus<_1,_2> > //再次转发
{};
template <class t, class d1, class d2>
quantity<t, typename divide_dimensions<d1,d2>::type>
operator/(quantity<t,d1> x, quantity<t,d2> y)
{
return quantity<t, typename divide_dimensions<d1,d2>::type>(
x.value() / y.value());
}
现在我们可以验证膝上型计算机的重力是否计算正确,通过一个逆向的计算,我们得到其质量,然后将它与条件给出的计算机质量比较:
quantity<float,mass> m2 = f/a;
float rounding_error = std::abs((m2-m).value());