0
我想了解在C++標準是否允許有效調用std::upper_bound
,範圍是容器的end()
到它的end()
?什麼是std :: upper_bound在一個空的結束範圍內定義的行爲?
換句話說,空範圍[end()
,end()
)的有效範圍是多少? end()
從本身到達? C++ 98中的答案在C++ 11中保持不變嗎?
我想了解在C++標準是否允許有效調用std::upper_bound
,範圍是容器的end()
到它的end()
?什麼是std :: upper_bound在一個空的結束範圍內定義的行爲?
換句話說,空範圍[end()
,end()
)的有效範圍是多少? end()
從本身到達? C++ 98中的答案在C++ 11中保持不變嗎?
[first, last)
標準說[first, last)
不是一個有效的範圍內,如果首先是在範圍內的最後後面。這使得[cont.end(), cont.end()]
的有效範圍。但是,算法不適用於這些範圍。 對於e.g: -
std::reverse(cont.end(), cont.end());
只是一個空操作,而不是不確定的行爲。
如果不允許空範圍,那就是缺陷。所以這個問題涉及(1)尋找相關語言,如果找不到,(2)尋找缺陷報告。你有嘗試過嗎? –