On Sat, Feb 20, 2016 at 10:50 AM, Matthijs van Duin <matthijsvand...@gmail.com> wrote: > On 20 February 2016 at 18:55, H.J. Lu <hjl.to...@gmail.com> wrote: >> struct dummy0 >> { >> }; >> >> struct dummy >> { >> dummy0 d[20]; >> >> dummy0 * foo (int i); >> }; >> >> dummy0 * >> dummy::foo (int i) >> { >> return &d[i]; >> } >> >> dummy0 * >> bar (dummy d, int i) >> { >> return d.foo (i); >> } > > 1. This has undefined behaviour due to returning a pointer to a local variable > 2. There's still no need for the reference to the original argument > since copying it is a nop.
Given: An empty type is a type where it and all of its subobjects (recursively) are of class, structure, union, or array type. No memory slot nor register should be used to pass or return an object of empty type. Footnote: Array of empty type can only passed by reference in C and C++. Is there a class, which meets the above definition, with a member function which can't be passed without a memory slot or a register? -- H.J. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits