return trace_real(s1.elem());
typename UnaryReturn<ILattice<T1,N>, FnRealTrace>::Type_t  d;  for(int i=0; i < N; ++i) d.elem(i) = trace_real(s1.elem(i)); return d;
trace_real(const IScalar<T1>& s1){  return trace_real(s1.elem());}