I think LLVM and its Tablegen mechanism is a good example that large C++ projects almost inevitably will contain some code generation facilities. In that case this mechanism is rather poorly documented and is used to generate 10+ different targets.
I believe the facilities provided by circle would make most of the Tablegen infrastructure redundant.