On Tue, May 29, 2018 at 10:42 AM, Jakub Jelinek <ja...@redhat.com> wrote: > On Tue, May 29, 2018 at 10:38:09AM -0400, Jason Merrill wrote: >> > int a[2] = {1, 2}; >> > int D.2131[2] = a; >> > int x [value-expr: D.2131[0]]; >> > int y [value-expr: D.2131[1]]; >> > >> > <<cleanup_point int a[2] = {1, 2};>>; >> > int D.2131[2] = a; >> > return <retval> = x + y; >> > >> > is what original dump shows as implemented, so I don't see a being used >> > here >> > as an lvalue, we copy the elements into the temporary and that is all where >> > it is referenced. >> >> Ah, no, you're right for foo, where the structured binding declaration >> is not a reference. And it looks like we shouldn't hit this path for >> >> auto & [x,y] = a; >> >> but that should be added to the testcase. > > It is already there (in baz).
Well, yes, but in baz a is an S, not an array; I see value and reference cases for S, but only value for int array. Jason