On 15 Mar 2006, at 12:17, Gustaf Neumann wrote:
The implementation of move as copy+destroy is a compromise between simplicity and functionality. I can imagine cases, where one wants to have more or less the equivalent to a copy constructor when copy occurs and maybe something different when a move happens. However, since all methods are equal in xotcl, it is quite simple for a poweruser of xotcl to overload copy/move and add applicaton specific addtional behavior to it. if one does not like the side- effects of destroy in a move, a custom move operation can set in instance variable "__during_move__" and query this from the destroy method to change its behavior.
I am actually quite surprised to find that the move operation calls the destructor. This is not mentioned on the reference manual and does, in fact, seem counter-intuitive. A move is a move, nothing is being destroyed, so why call the destructor? I understand that the operation is actually quite expensive, due to current Tcl internals, but is there any reason why a destructor should be called? If we want a method called for a move operation, surely it would be simple to define that a "beingMoved" method is then called.