2
ทำไม std :: hash ไม่รับประกันว่าจะถูกกำหนดขึ้น?
หลังจากนี้เราใช้N4140 (มาตรฐาน C ++ 14) ตาม§ 17.6.3.4 ต้องการแฮ , ค่าที่ส่งคืนจะขึ้นอยู่กับอาร์กิวเมนต์k ในช่วงเวลาของโปรแกรมเท่านั้น [หมายเหตุ: ดังนั้นการประเมินผลทั้งหมดของการแสดงออกh(k)ที่มีค่าเหมือนกันสำหรับ kผลผลิตผลเดียวกันสำหรับการดำเนินการที่กำหนดของโปรแกรม - บันทึกท้าย] และแฮชของเทมเพลตคลาส Class 20.9.12พูดว่า ... การเริ่มต้นhash<Key>จะต้อง: (1.1) - ตอบสนองความต้องการของแฮช (17.6.3.4) ... (1.2) - ... ซึ่งหมายความว่าค่าแฮชของvalue(เช่นhash<decltype(value)>(value)) อาจใช้ค่าอื่นหากคุณรีสตาร์ทโปรแกรม แต่ทำไม ข้อ จำกัด นี้ไม่ได้อยู่ในมาตรฐานของ C ++ 11 แต่อยู่ในมาตรฐานของ C ++ 14, C ++ 17 และ C ++ 20 ในฐานะผู้ใช้ …