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