ฉันขาดอะไรบางอย่างไปแล้ว แต่ฉันไม่เข้าใจว่าทำไมการคอมไพล์นี้ (ทั้ง g ++ และ clang ++):
struct A
{
};
struct B
{
};
int main()
{
A a(B);
}
ประการแรกBคือประเภท ... ไม่ใช่ค่า ฉันควรตีความรหัสนี้อย่างไร
A a(B());ซึ่งอาจเป็นคำจำกัดความของตัวแปรหรือการประกาศฟังก์ชัน
struct A{}; int main() { A(foo); } คอมไพล์ดังที่เป็นอยู่แม้ว่าfooจะไม่ได้ตั้งชื่ออะไรก็ตาม