DMD version: 2.063.2
Code: http://pastebin.com/sTLhnNdV
Output:
CTor A with 42
CTor A with 23
CTor A with 65
Value call with A::65
DTor A with 65
CTor A with 1337
Value call with A::1337
DTor A with 1337
Ref call with A::42
DTor A with 23
DTor A with 42
Disassembly: http://pastebin.com/5emmwqJc
Compilation flags: -release -O
Issue:
The first two value calls receive their arguments via move semantics, i.e. the argument is not copied but passed directly to the function.
This behavior is showed in the output (the postblit function is not called) but the disassembly shows that the struct is actually copied before the function call.
Comment #1 by rswhite4 — 2013-09-20T11:42:14Z
If that is fixed, there could be a huge performance boost.
Comment #2 by robert.schadek — 2024-12-13T18:11:41Z