Есть ли разница между `List x;` и `List x ()`
Название происходит от известного сайтаC ++ FAQ Маршалл Клайн.
Автор утверждает, что есть разница между следующими двумя примерами кода.
Suppose that List is the name of some class. Then function f() declares a local List object called x:
void f()
{
List x; // Local object named x (of class List)
...
}
But function g() declares a function called x() that returns a List:
void g()
{
List x(); // Function named x (that returns a List)
...
}
Но действительно ли неправильно использовать второй вариант?
И если это действительно объявление, не скажет ли компилятор, что вы не можете объявить функцию внутри функции?