Je manque certainement quelque chose, mais je ne comprends pas pourquoi cela se compile (avec à la fois g ++ et clang ++):
struct A
{
};
struct B
{
};
int main()
{
A a(B);
}
Tout d'abord, B
c'est un type ... pas une valeur. Comment dois-je interpréter ce code?
A a(B());
ce qui pourrait être une définition de variable ou une déclaration de fonction.
struct A{}; int main() { A(foo); }
compile tel quel , même s'il foo
ne nomme rien.