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