У мене, звичайно, чогось не вистачає, але я не розумію, чому це компілюється (з обома g ++ та clang ++):
struct A
{
};
struct B
{
};
int main()
{
A a(B);
}
Перш за все, B
це тип ... а не значення. Як слід інтерпретувати цей код?
A a(B());
що могло б бути визначенням змінної або декларацією функції.
struct A{}; int main() { A(foo); }
компіляція є такою, яка є , навіть якщо foo
нічого не називає.