Steven Schveighoffer Wrote: > On Tue, 04 Jan 2011 11:53:59 -0500, Jesse Phillips > <[email protected]> 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." http://stackoverflow.com/questions/4589114/when-to-delete-in-d
