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

Sergey Markelov <sergio_nsk at yahoo dot de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |sergio_nsk at yahoo dot de

--- Comment #1 from Sergey Markelov <sergio_nsk at yahoo dot de> ---
Yet another evaluation order violation in the simple assignment.

#include <array>
#include <iostream>

using std::array;
using std::cout;

array<int, 1> a;

array<int, 1>& f() {
  cout << "f ";
  return a;
}

int g() {
  cout << "g ";
  return 0;
}

int main() { f() = {{g()}}; }

Actual output:   f g
Expected output: g f

All modern GCC versions and trunk are affected.

Compiler Explorer: https://godbolt.org/z/qr8TKT4Tq
Stack Overflow: https://stackoverflow.com/q/79841435/6752050

Reply via email to