#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;
}