C++ TMP, being a pure functional language, tends to compose well. I developed a standalone recursive template expansion today, bit by bit, checking it as I went using a typeid().name() + GNUs abi::__cxa_demangle + clang-format hack, and then integrated it into a project. Worked first time. Writing the resulting template by hand would have been incredibly error-prone.