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