This code should print 1 2 3 4, but instead prints 1 1 1 1.
#include <iostream>
template <int N>
void f(int x = N);
template <int N>
void f(int x)
{
std::cout << x << std::endl;
}
int main()
{
f<1>();
f<2>();
f<3>();
f<4>();
return 0;
}