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 foonon nomina nulla.