clear() and UFCS

Dmitry Olshansky dmitry.olsh at gmail.com
Fri May 25 06:06:38 PDT 2012


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.

-- 
Dmitry Olshansky


More information about the Digitalmars-d mailing list