CreateLeaf<QDPType<T1,C1> >::make(l), CreateLeaf<typename SimpleScalar<typename WordType<C1>::Type_t>::Type_t >::make(typename SimpleScalar<typename WordType<C1>::Type_t>::Type_t(r))));
CreateLeaf<typename SimpleScalar<typename WordType<C2>::Type_t>::Type_t >::make(typename SimpleScalar<typename WordType<C2>::Type_t>::Type_t(l)), CreateLeaf<QDPType<T2,C2> >::make(r)));
outerProduct(const QDPType<T1,C1> & l,const typename WordType<C1>::Type_t & r){  typedef BinaryNode<FnOuterProduct,    typename CreateLeaf<QDPType<T1,C1> >::Leaf_t,    typename CreateLeaf<typename SimpleScalar<typename WordType<C1>::Type_t>::Type_t >::Leaf_t> Tree_t;  typedef typename BinaryReturn<C1,typename SimpleScalar<typename WordType<C1>::Type_t>::Type_t,FnOuterProduct>::Type_t Container_t;  return MakeReturn<Tree_t,Container_t>::make(Tree_t(    CreateLeaf<QDPType<T1,C1> >::make(l),    CreateLeaf<typename SimpleScalar<typename WordType<C1>::Type_t>::Type_t >::make(typename SimpleScalar<typename WordType<C1>::Type_t>::Type_t(r))));}