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