Struct beeing moved around

Michel Fortin michel.fortin at michelf.com
Fri May 20 13:57:56 PDT 2011


On 2011-05-20 14:46:03 -0400, Benjamin Thaut <code at benjamin-thaut.de> said:

> Am 20.05.2011 19:51, schrieb Michel Fortin:
>> On 2011-05-20 13:36:58 -0400, Benjamin Thaut <code at benjamin-thaut.de> said:
>> 
>>> What if I need a value type that may be copied, but may not be moved?
>> 
>> I don't think that's possible. Why would you want that?
> 
> [...]
> 
> If there is no garantuee that a struct stays on the same memory 
> location within 1 Stack frame, you pretty much can not implement a 
> other GC unless you hack into the compiler.

But... is that a real problem or just something you've come up with to 
argue that a move constructor can be useful? I ask because it looks 
pretty synthetic: if you're going to call something alike 
GC.addRoot/GC.removeRoot upon construction and destruction of this 
smart pointer you could as well implement standard reference counting. 
And reference counting does not need a move constructor since moving 
doesn't change the reference count.

But this is an interesting topic. I'm currently hacking the compiler to 
support Objective-C objects. As part of this I want the memory to be 
managed automatically, which isn't so easy because Objective-C objects 
have to live in a separate heap. So I'll need to add support for an 
external memory management system and make it work seamlessly with the 
D GC. I already know how I'm going to implement it, and it won't 
require anything like a move constructor.

-- 
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/



More information about the Digitalmars-d mailing list