Sarvesh:
Hay un comportamiento extraño cuando compilo el siguiente código:
class Foo {
};
int main() {
Foo(b);
}
Se compila correctamente incluso sin declaración de b
. Cualquier explicación para esto?
songyuanyao:
Es una declaración misma. Se declara una variable llamada b
con el tipo Foo
, es decir, el mismo efecto que Foo b;
.
Existe una ambigüedad en la gramática que implica la expresión de los estados- s y la declaración de s : Una expresión comunicado con una conversión explícita al estilo de la función como su subexpresión más a la izquierda puede ser indistinguible de una declaración donde el primer declarador comienza con una
(
. En esos casos, la declaración es una declaración .
Los casos restantes son de declaración s . [Ejemplo:
class T { // ... public: T(); T(int); T(int, int); }; T(a); // declaration
...