Je ne comprends pas pourquoi cela compile

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