www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 22072] New: importC: Error: compound literal is not an lvalue


          Issue ID: 22072
           Summary: importC: Error: compound literal is not an lvalue and
                    cannot be modified
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: major
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: ibuclaw gdcproject.org

It can be used as an lvalue in an assignment in C
The  value  of  the  compound  literal  is  that  of  an  unnamed  object 
initialized  by  the initializer  list.  If  the  compound  literal  occurs 
outside  the  body  of  a  function,  the  object has  static  storage 
duration;  otherwise,  it  has  automatic  storage  duration  associated  with
the enclosing block.

Reduced test:
struct S { int a; int b; };
void test()
    (struct S) { 1, 2 } = (struct S) { 3, 4 };

Jun 22 2021