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, Bc'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 foone nomme rien.