Mi manca sicuramente qualcosa, ma non capisco perché questo compili (sia con g ++ che con clang ++):
struct A
{
};
struct B
{
};
int main()
{
A a(B);
}
Prima di tutto, B
è un tipo ... non un valore. Come devo interpretare questo codice?
A a(B());
quale potrebbe essere una definizione variabile o una dichiarazione di funzione.
struct A{}; int main() { A(foo); }
compila così com'è , anche se foo
non nomina nulla.