A big difference!
Suppose that List is the name of some class. Then function f() declares a localList object called x:
void f()
{
List x; // Local object named x (of class List)
...
}
{
List x; // Local object named x (of class List)
...
}
But function g() declares a function called x() that returns aList:
void g()
{
List x(); // Function named x (that returns a List)
...
}
{
List x(); // Function named x (that returns a List)
...
}