typename BinaryReturn<ILattice<T1,N>, IScalar<T2>, OpBitwiseAnd>::Type_t  d;  for(int i=0; i < N; ++i) d.elem(i) = l.elem(i) & r.elem(); return d;
return l.elem() & r.elem();
operator&(const ILattice<T1,N>& l, const IScalar<T2>& r){  typename BinaryReturn<ILattice<T1,N>, IScalar<T2>, OpBitwiseAnd>::Type_t  d;  for(int i=0; i < N; ++i)    d.elem(i) = l.elem(i) & r.elem();  return d;}