Certamente estou perdendo alguma coisa, mas não entendo por que isso compila (com g ++ e clang ++):
struct A
{
};
struct B
{
};
int main()
{
A a(B);
}
Primeiro de tudo, Bé um tipo ... não um valor. Como devo interpretar esse código?
A a(B());que poderia ser uma definição variável ou declaração de função.
struct A{}; int main() { A(foo); } compila como está , mesmo fooque não cite nada.