到目前为止,看起来我们已经有了一个解决方案,像这样:
#include <boost/mpl/transform.hpp>
template <class t, class d1, class d2>
quantity<
t
, typename mpl::transform<d1,d2,mpl::plus>::type
>
operator*(quantity<t,d1> x, quantity<t,d2> y) { ... }
但是很抱歉,这还不够!现在如果你试图使用这个operator*,你会得到一个编译错误,原因就在于你将mpl::plus直接传给了mpl::transform,而(mpl的)规定却说元函数的参数必须是类型,但mpl::plus却不是类型,而是一个类模板。所以我们必须通过某种方式让类似plus这样的元函数满足这种元数据(