Taking a copy of an object

kris foo at bar.com
Thu Aug 10 00:14:15 PDT 2006


kris wrote:
> Derek Parnell wrote:
> 
>> On Thu, 10 Aug 2006 00:30:15 -0400, Mikola Lysenko wrote:
>>
>>
>>> Adding a virtual deep copy method to Object is a bad idea.
>>
>>
>>
>> ...
>>
>>
>>> A different solution is to require each type to explicitly state if 
>>> it supports deep-copies at compile time.
>>
>>
>> ...
>>  
>>
>>> If everyone adheres to this convention, the following templates to allow
>>> anyone to test if a type is clonable at compile time - and easily 
>>> perform
>>> a clone.  
>>
>>
>>
>> ...
>>
>>
>>> For completeness, there is also a shallow copy or 'dup'
>>> operation using the same technique.
>>
>>
>>
>> Yes. This is most of what I was trying to get across.
>> The only problem is the phrase "If everyone adheres to this convention".
>> That will never happen, people being as they are. This is why I'd like
>> these capabilities to be supported by the compiler via the use of 
>> operators
>> that invoke the associated 'op' function.
> 
> 
> Somewhat tongue-in-cheek: I guess if the dup operator were to become 
> ":=" then clone would be "::=" ?

Perhaps better to use properties instead of operators? Thus, x.dup; 
would invoke the opDup() method where appropriate (and error if not 
supported), and x.clone; would invoke opClone()?

At least that would be compatible with current .dup conventions, and 
avoid introducing disputable symbolic operators? Otherwise, we might end 
up with smiley's as operators :)

It wouldn't be entirely necessary, but perhaps clone, like dup, might be 
supported for native-types directly (int, char*[], etc)? For the sake of 
consistency?




More information about the Digitalmars-d mailing list