มีการพูดถึง เรื่องนี้มาก่อนแต่นี่ไม่ได้ซ้ำกัน
เมื่อมีคนถามถึงความแตกต่างระหว่างdecltype(a)
และdecltype((a))
คำตอบปกติคือ - a
เป็นตัวแปร(a)
คือการแสดงออก ฉันพบคำตอบนี้ไม่พอใจ
อย่างแรกa
คือการแสดงออกเช่นกัน ตัวเลือกสำหรับการแสดงออกหลักได้แก่ หมู่คนอื่น ๆ -
- (นิพจน์)
- ID-แสดงออก
ที่สำคัญกว่านั้นการใช้ถ้อยคำสำหรับเดคไทป์จะพิจารณาวงเล็บอย่างชัดเจนมาก :
For an expression e, the type denoted by decltype(e) is defined as follows:
(1.1) if e is an unparenthesized id-expression naming a structured binding, ...
(1.2) otherwise, if e is an unparenthesized id-expression naming a non-type template-parameter, ...
(1.3) otherwise, if e is an unparenthesized id-expression or an unparenthesized class member access, ...
(1.4) otherwise, ...
ดังนั้นคำถามยังคงอยู่ ทำไมวงเล็บจึงได้รับการปฏิบัติต่างกัน? มีใครคุ้นเคยกับเอกสารทางเทคนิคหรือการอภิปรายของคณะกรรมการหลัง? การพิจารณาอย่างชัดเจนสำหรับวงเล็บนำไปสู่การคิดว่านี่ไม่ใช่การกำกับดูแลดังนั้นจะต้องมีเหตุผลทางเทคนิคที่ฉันพลาด
(a)
คือนิพจน์และa
เป็นนิพจน์และตัวแปร"