แนวคิดequality_comparable_with<T, U>
มีจุดมุ่งหมายที่จะประกาศวัตถุชนิดที่T
และU
สามารถนำมาเปรียบเทียบเท่ากับแต่ละอื่น ๆ และถ้าพวกเขาอยู่แล้วนี้มีความหมายที่คาดหวัง ไม่เป็นไร.
อย่างไรก็ตามแนวคิดนี้ยังต้องcommon_reference_t<T&, U&>
มีอยู่ แรงกระตุ้นหลักสำหรับcommon_reference
และฟังก์ชั่นการดูแลของมันดูเหมือนว่าจะเปิดใช้งานตัวทำซ้ำพร็อกซีเพื่อให้มีสถานที่ที่จะเป็นตัวแทนของความสัมพันธ์ระหว่างreference
และvalue_type
สำหรับการทำซ้ำดังกล่าว
เยี่ยมมาก แต่ ... สิ่งใดที่เกี่ยวข้องกับการทดสอบว่า a T
และ a U
สามารถเปรียบเทียบกันได้หรือไม่ ทำไมมาตรฐานจึงต้องการสิ่งนั้นT
และU
มีความสัมพันธ์อ้างอิงร่วมกันเพียงเพื่อให้คุณสามารถเปรียบเทียบพวกเขาได้เท่ากัน?
สิ่งนี้จะสร้างสถานการณ์คี่บอลซึ่งเป็นการยากมากที่จะมีสองประเภทซึ่งไม่มีเหตุผลพอสมควรที่มีความสัมพันธ์อ้างอิงทั่วไปที่เทียบเคียงได้ในเชิงตรรกะ ตัวอย่างเช่นvector<int>
และpmr::vector<int>
เหตุผลควรเปรียบเทียบ แต่ไม่สามารถทำได้เพราะไม่มีการอ้างอิงทั่วไปที่สมเหตุสมผลระหว่างสองประเภทที่ไม่เกี่ยวข้องกัน
assignable_from
ต้องใช้common_reference
...