&gt; Special preprocessing phases to extend C++ are odd.<p>You should see Unreal Engine, which uses preprocessing to extend C++ with a garbage collector, reflection, interfaces, and runtime class objects.