On Saturday, 13 February 2016 at 19:25:37 UTC, Ola Fosheim
Grøstad wrote:
I'm not sure what you mean by "has move semantics" here. It
does not have C++'s move semantics, no, but I would say D has
its own move semantics. It has a move() function that
transfers raw state between objects, and D structs are
supposed to be designed so they are movable by means of raw
bit transfer, allowing the compiler and GC to move them around
as it sees fit. But maybe I'm missing something?
Well, but that is like saying that C++03 also had move
semantics. There is nothing special about D's move(), it's just
a library function?
D "guarantees" NRVO which is what enables its move semantics, C++
did/does not.
Quotes because IIRC(?) it used to be part of the spec and it
isn't anymore, I don't think Walter or Andrei have addressed this
yet so I'm not sure if it's intended.