An abusive lambda calculus evaluator written entirely in C++ templates