在我正在開發的一個項目中,我不得不使用C++ 98。由於需要在特定的結構向量中執行快速查找,僅使用這些結構的幾個元素作爲鍵,我迄今已愉快地傳遞給std::lower_bound
和std::upper_bound
a value
參數,其類型與那些結構和比較函數不同將妥善處理這種異構情況。C++ 98異構容器查找
這一切都按預期工作,但今天我突然意識到這可能不被標準所允許,並且我在幾篇論文中發現了這種預感的確認,如this one,其中也提出了對標準的修改,現在學習,已經在C++ 0x中實現,如this other paper confirms。
我的問題是:是事實,我的代碼工作正常,儘管標準的信,一個偶然的巧合,具體實施的一個副作用,無保證的結果應該不會持久我改變編譯器和什麼?
換句話說,我真的應該真的真的改變自己的代碼以符合標準(這會使其複雜化),或者我可以不打擾並放過它,考慮到這個代碼庫不會被編譯除了g ++之外的其他任何東西?
你爲什麼認爲這是不允許的?我一直在做幾次,如果不允許,原型將使用'std :: iterator_traits :: value_type'而不是'T'。 –
你可以用一小段代碼展示你的用例嗎?這目前不是很容易閱讀 –
這是我在第一篇文章中解釋的,與用例一起鏈接。 –