clear() and UFCS

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Fri May 25 08:00:20 PDT 2012


On 5/25/12 8:06 AM, Dmitry Olshansky wrote:
> On 25.05.2012 17:04, Alex Rønne Petersen wrote:
>> So I was writing a container class and in some test code, I called
>> container.clear(). Reasonable enough, right? Hell, it even compiled!
>>
>> Turns out, my program completely broke at runtime. Apparently, I'd
>> forgotten to implement clear() on my container class, and
>> *object.clear() was being called instead*.
>>
>> I don't blame UFCS for this. It just happened to be the reason this
>> compiled at all. But, what I do think is: clear is the *ABSOLUTELY MOST
>> HORRIBLE NAME EVER* for a function that actually finalizes and zeroes an
>> object. Did it not seem obvious to call it, I don't know, *finalize*?
>> And even ignoring the naming, having a symbol called clear in the
>> 'global' namespace is absolute insanity.
>>
>> Am I the only person with this opinion?
>>
>
> No, there are thousands like you. Let's call clear "nuke", breaking TDPL
> and saving the day. :)
>
> P.S. Obviously first clear goes through normal deprecation cycle.

Since this is a recurring issue we should probably change the name.

Andrei




More information about the Digitalmars-d mailing list