整数に対するstd::max_elementの奇妙な動作に気付きました。違いは 1 つだけです。
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
std::vector<int> v = {1, 2, 3};
std::cout<<*std::max_element(v.begin(), v.end())<<"\n";//it's ok - correct answer
std::cout<<*std::max_element(v.begin(), v.begin()+1)<<"\n";//compare between 1 and 2: answer - 1
std::cout<<*std::max_element(v.begin()+1, v.begin()+2)<<"\n";//compare between 2 and 3: answer - 2
}
64 ビット Linuxでgcc 4.8コンパイラを使用しています。これはコンパイラのバグですか、それとも何か他のものですか?