#include <iostream>
constexpr int factorial(int n) // Everything here is known at compile time
{
return n <= 1 ? 1 : (n * factorial(n - 1));
}
int main(void)
{
constexpr int f = factorial(4); // 4 is known at compile time
std::cout << f << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY29uc3RleHByIGludCBmYWN0b3JpYWwoaW50IG4pIC8vIEV2ZXJ5dGhpbmcgaGVyZSBpcyBrbm93biBhdCBjb21waWxlIHRpbWUKewogICAgcmV0dXJuIG4gPD0gMSA/IDEgOiAobiAqIGZhY3RvcmlhbChuIC0gMSkpOwp9CgppbnQgbWFpbih2b2lkKQp7Cgljb25zdGV4cHIgaW50IGYgPSBmYWN0b3JpYWwoNCk7IC8vIDQgaXMga25vd24gYXQgY29tcGlsZSB0aW1lCglzdGQ6OmNvdXQgPDwgZiA8PCBzdGQ6OmVuZGw7CglyZXR1cm4gMDsKfQ==