В C++0x можно делать так:
#include <iostream>
constexpr int add(int a, int b) { return a + b; }
int main()
{
std::cout << add(1,2); // Compile time
int a, b;
std::cin >> a >> b;
std::cout << add(a, b); // Run time
}
Функция обозначаемая сonstexpr будет вычислена во время компиляции или во время выполнения в зависимости от аргументов.
В Nemerle похожее можно сделать разобрав аргументы макросы и вычислив их по месту если это PExpr.Literal.
Но это громоздко и частное решение для каждого макроса.
Есть ли возможность сделать общее решение для этого ?