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

            Bug ID: 85867
           Summary: Subscript operator applied to an temporary array
                    results in an lvalue
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: yaghmour.shafik at gmail dot com
  Target Milestone: ---

This Stackoverflow question https://stackoverflow.com/q/33161003/1708801
provides the following code:

using Y = int[10];

int main() {
    (Y { })[0] = 1;
}

which compiles without diagnostic, CWG defect report 1213:
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1213 says the
result of the  subscript operator should be an xvalue and therefore not
assignable to.

Also see the following clang bug report on the same issue, which was resolved
at the end of 2017: https://bugs.llvm.org/show_bug.cgi?id=25357

I have a godbolt for it here: https://godbolt.org/g/AmzbFh 

We can see that clang no longer allows this but gcc does.

Reply via email to