Я, конечно, что-то упускаю, но я не понимаю, почему это компилируется (как с g ++, так и clang ++):
struct A
{
};
struct B
{
};
int main()
{
A a(B);
}
Прежде всего, B
это тип ... не значение. Как я должен интерпретировать этот код?
A a(B());
может быть определение переменной или объявление функции.
struct A{}; int main() { A(foo); }
компилируется как есть , даже если foo
ничего не называется.