Each time the source is compiled, the compiler will need to redo all the meta-programmed work. There aren't any real facilities to cache the results of the metaprogramming except by using a build system and not recompiling that source file. (Which of course doesn't work when doing single translation unit builds.)
Is there a reason to do single translation unit builds - if your programming language supports modules (such as D)?
One of the key-problems with metaprogramming in C++ is that it doesn't simply "slow down" compilation - (slowing down is already bad enough) - It blows up the compilation times by an order of magnitude.
Can compile-time costs of metaprogramming features - be similar to cost of performing the same code at run-time?
If it can be, is there any other drawbacks (except debug-ability)?
Without compile-time introspection (in combination with compile time metaprogramming), is there any other way to generate fast-automatic serialization and similar automatic object-state-mapping features?