add start of C++ declarative function objects
wip