On May 19, 2008, at 4:52 PM, Brady Eidson wrote:
To give you an analogy, even in C++, where you're allowed to
overload operator delete, if you overloaded operator delete to mean
"do not free this object's memory, but do delete the file it
references from the file system", well, let's just say that your
patch would not pass code review with any of your four reviewers :).
But if you overloaded the delete operator to free the object's
memory *and* delete its referenced files from the file system, you'd
be using the operator overloading in its intended capacity.
I think the analogy between delete in C++ and delete in JavaScript is
strained. First of all, the two delete operators do totally different
things. Second, C++ supports general operator overloading for nearly
every operator. The right analogy would be removing objects from
collections, and C++ does not have a special operator for that.
(But as a side note I think it would be poor style for C++ code to
overload operator delete to remove files from the filesystem. The
right place to do additional resource management would be the
destructor.)
I do agree that the spec should define a single interoperable behavior
and we should all converge.
Regards,
Maciej