Meta-meta-programming: Generating C++ templates with Racket S-expressions (matt.might.net)