On Thursday, 17 May 2018 at 19:11:27 UTC, Shachar Shemesh wrote:
On 17/05/18 18:47, kinke wrote:
Since clang is able to compile this struct and do everything
with it, and since the existence of the move constructor
requires the precise same type of hooking as is needed in this
case, I tend to believe that an IR representation of DIP 1014
is possible.
I checked, and the reason is that D and C++ use a different ABI
wrt. by-value passing of non-POD arguments. C++ indeed passes a
reference to a caller-allocated rvalue, not just on Win64; that
makes it trivial, as there are no moves across call boundaries.
But your proposal may imply changing the D ABI accordingly.