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 B
jest 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 foo
niczego nie wymienia.