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 foo
que não cite nada.