xxxInPlace or xxxCopy?

foobar foo at bar.com
Thu Jan 20 07:36:00 PST 2011


Jonathan M Davis Wrote:

> On Thursday 20 January 2011 03:51:48 Trass3r wrote:
> > If such an annotation was introduced, it should be the other way around.
> > But imo discarding a return value should always result in a warning,
> > the function returns something for a reason.
> 
> Actually, there are plenty of cases where you throw away the return value. A 
> number of overloaded operators are prime examples - such as opAssign. 
> std.algorithm.sort both sorts in place _and_ returns a sorted range (so that 
> other algorithms can then know that the range is sorted). It's really quite easy 
> to get legitimate cases where throwing away the return value makes perfect 
> sense. Now, if you're dealing with a strongly pure function which throws away 
> its return value, then yes, that's definitely bug, since the only effect of the 
> function is its return value. Frequently however, that's not the case.
> 
> Yes, you can have bugs because you didn't actually use the return value of a 
> function, but it's that necessarily uncommon to have function calls which 
> legitimately throw away their return value.
> 
> - Jonathan M Davis

You brought up an interesting idea:
D already supports purity and as you said it doesn't make sense to discard return values of such functions. 
Therefore, it makes sense that for pure functions, this would result in a compile time error.



More information about the Digitalmars-d mailing list