使用占位符后的operator/像这样:
template <class t, class d1, class d2>
quantity<
t
, typename mpl::transform<d1,d2,mpl::minus<_1,_2> >::type
>
operator/(quantity<t,d1> x, quantity<t,d2> y)
{
typedef typename
mpl::transform<d1,d2,mpl::minus<_1,_2> >::type dim;
return quantity<t,dim>( x.value() / y.value() );
}
代码明显变得更为简洁了(因为用不着额外定义一个minus_f类)。我们还可以将计算新单位的代码分解到一个新的元函数中,这样代码将继续得到简化: