Википедия
Метапрограммирование — вид программирования , связанный с созданием программ , которые порождают другие программы как результат своей работы (в частности, на стадии компиляции их исходного кода ), либо программ, которые меняют себя во время выполнения ( самомодифицирующийся код ). Первое позволяет получать программы при меньших затратах времени и усилий на кодирование, чем если бы программист писал их вручную целиком, второе позволяет улучшить свойства кода .