Почему моя программа возвращает разные результаты на уровне оптимизации O0 и O2 - PullRequest
0 голосов
/ 15 октября 2018

Вот мой код:

#include<iostream>

const int & Min(const int& a, const int& b);


int main() {
    using namespace std;

    auto&& val = Min(1,2);

    cout << val << endl;
    return 0;
}


const int & Min(const int& a, const int& b) {
    return a < b ? a : b;
}

Если я скомпилирую это с опцией O0, g++ -O0 main.cpp -o main, результат будет 1.Если я скомпилирую с опцией O2, g++ -O2 main.cpp -o main, это даст результат 0.

Почему это дает разные результаты?

...