C++ template technique to implement compile-time lazy evaluation of structures representing computations