考慮以下場景:
呼叫f( 3) 結果在一個不明確的重載決策中。消除 f( int ) 會導致 Clang 和 GCC 優先考慮右值引用而不是左值引用。但是,刪除任一引用重載都會導致 f( int ) 出現歧義。
重載解析通常遵循嚴格的部分排序。然而,在這種情況下,int 似乎等同於兩個不等同的概念。管理這種情況的具體規則如下:
C標準的13.3.3.2提供了一個特殊的規則可以直接參考綁定:
如果S1 和S2 是引用綁定(8.5.3),且都不引用未宣告的非靜態成員函數的隱式物件參數ref-qualifier,且S1 將右值參考綁定到右值,且S2 綁定左值引用,那麼S1 比S2 更好的匹配。
當其中一個初始化為不是引用綁定。
進行引用的想法已經提出了比非引用綁定更好的匹配。要發起有關此主題的討論,建議將此類提案發佈到 ISO C 未來提案論壇。
以上是為什麼「int」、「int&&」和「const int&」之間的重載解析不明確?的詳細內容。更多資訊請關注PHP中文網其他相關文章!