FYI, the STL in most places just uses one function, like this:
template <typename T>
void newRelation(T t) { ... t() ... }
which works with functors and function pointers automatically, and
with the pointer-to-member case via an adaptor; I think there
is something like `member_function' that returns a new functor so that
you can say:
newRelation (member_function(obj, &ComputeVelocity::doit), v, p, m)
It's not clear to me that we should try to imitate the STL in any way
in POOMA -- but its conventions are now used by lots of people, so it
might be good to gradually move the interfaces in that direction. It's
also worth noting that compilers are working hard on optimizing those
constructs, so if POOMA looks like the STL, that might have positive
side-effects as well.