Existe alguma diferença entre `List x;` e `List x ()`
O título vem do famoso sitePerguntas frequentes sobre C ++ por Marshall Cline.
O autor afirma que há uma diferença entre os dois exemplos de código a seguir.
Suponha que List seja o nome de alguma classe. Então a função f () declara um objeto List local chamado x:
void f()
{
List x; // Local object named x (of class List)
...
}
Mas a função g () declara uma função chamada x () que retorna uma lista:
void g()
{
List x(); // Function named x (that returns a List)
...
}
Mas é realmente errado usar a segunda variante?
E se realmente é uma declaração, o compilador não reclamaria que você não pode declarar uma função dentro de uma função?