«метапрограммирование» - это действительно плохое название для этой конкретной функции, по крайней мере, когда вы обсуждаете более одного языка, так как эта функция необходима только для небольшого количества языков:
- статические
- скомпилировано в машинный язык
- сильно оптимизирован для производительности во время компиляции
- расширяемый пользовательскими типами данных (ООП в случае C ++)
- чрезвычайно популярный
убрать любой из них, и «статическое метапрограммирование», просто не имеет смысла. поэтому я был бы удивлен, если бы какой-нибудь удаленный основной язык имел что-то подобное, как это понимается в C ++.
Конечно, динамические языки и несколько функциональных языков поддерживают совершенно разные концепции, которые также можно назвать метапрограммированием.