On Tue, 04 Jan 2011 17:56:51 -0500, Jesse Phillips <jessekphillip...@gmail.com> wrote:

Steven Schveighoffer Wrote:

On Tue, 04 Jan 2011 11:53:59 -0500, Jesse Phillips
<jessekphillip...@gmail.com> wrote:

> Answering a question over on stack overflow I realized that clear() has
> 2 meanings.
>
> TDPL says that clear should be used to free resources of the object and
> place the object into an invalid state. That is failure can occur but
> memory corruption is prevent, similar to null for pointer types.
>
> However for container types clear() is used to empty the container. It
> is still valid to use the container after calling clear(), but the
> definition from TDPL suggest that this can not be expected.

clear as a global function is for destroying a class/struct

clear as a member can do anything.  clear is not a keyword.

clear(container) -> same as delete container, but without freeing any
memory.

container.clear() -> remove all elements

This has been brought up before as a problem, I'm not sure it's that
terrible, but I can see why there might be confusion.

-Steve

Then the answer I gave was wrong, and am curious what the correct answer is:

"Delete is not to be used with D version 2 and intended to be removed from the language. What the hold up is, I am not sure. Instead you use a function, I believe clear(), which resets your object to and empty state (frees resources that isn't GC memory). This is explained in The D Programming Language book, which I don't have handy right now."

That answer looks fine to me.

-Steve

Reply via email to