https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61769

--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> ---
If you change it to:

    const int& aa = std::abs(a);
    const int& foo=std::max(aa, aa);

You'll see that the problem goes away because the value returned by std::abs
gets its lifetime extended, then std::max returns a reference to the same
object, which has not gone out of scope.

Alternatively, avoid the pointless reference:

    int foo = std::max(std::abs(a), std::abs(a));

Reply via email to