Z pewnością czegoś brakuje, ale nie rozumiem, dlaczego to się kompiluje (zarówno z g ++, jak i clang ++):
struct A
{
};
struct B
{
};
int main()
{
A a(B);
}
Przede wszystkim Bjest typem ... a nie wartością. Jak mam interpretować ten kod?
A a(B());to definicja zmiennej lub deklaracja funkcji.
struct A{}; int main() { A(foo); } kompiluje się w obecnej postaci , nawet jeśli fooniczego nie wymienia.