The problem with metaprogramming-heavy C++ codebases is always compilation times and obtuse error messages...

Template metaprogramming is sometimes very useful to get around C++'s language restrictions, but I tend to use it sparingly.

> obtuse error messages

With concepts and constexpr-if and consteval it's increasingly less of a problem