มาตรฐาน C ++ ต้องการนิยามสำหรับสมาชิก const คงที่ของคุณหากจำเป็นต้องใช้นิยามอย่างใด
จำเป็นต้องใช้คำจำกัดความตัวอย่างเช่นถ้ามีการใช้ที่อยู่ push_back
รับพารามิเตอร์โดยอ้างอิง const ดังนั้นคอมไพเลอร์จึงจำเป็นต้องใช้ที่อยู่ของสมาชิกของคุณและคุณจำเป็นต้องกำหนดพารามิเตอร์ในเนมสเปซ
เมื่อคุณสร้างค่าคงที่อย่างชัดเจนคุณกำลังสร้างชั่วคราวและเป็นชั่วคราวซึ่งถูกผูกไว้กับการอ้างอิง (ภายใต้กฎพิเศษในมาตรฐาน)
นี่เป็นกรณีที่น่าสนใจจริงๆและฉันคิดว่ามันคุ้มค่าที่จะสร้างปัญหาเพื่อให้ std นั้นเปลี่ยนไปมีพฤติกรรมแบบเดียวกันสำหรับสมาชิกคงที่ของคุณ!
แม้ว่าในทางแปลก ๆ สิ่งนี้อาจถูกมองว่าเป็นการใช้งานที่ถูกต้องตามกฎหมายของผู้ดำเนินการ '+' โดยพื้นฐานแล้วผลลัพธ์ของการunary +
เป็นค่า rvalue และดังนั้นกฎสำหรับการผูกค่า rvalues กับการอ้างอิง const ใช้และเราไม่ใช้ที่อยู่ของสมาชิก const คงที่ของเรา:
v.push_back( +Foo::MEMBER );