Feature complete with code literals, splicing and the 'macro' macro.
args = performTransaction.Arguments
_transaction = $(args).BeginTransaction()
Have you looked at the implementation in Nemerele?
Personally, I like the way macros are written now. While they are a
little harder to write, they are easier to read. Plus, the more
easier macros is to create, the more they will be abused. I've seen
C++ code that does not look like C++ anymore due to macro abuse.
I don't think a feature should be harder than necessary, just to keep people from using it ...for a counterexample, look at Lisp (and Scheme), where macros are used almost as much as functions, and everything works out great.