On 03/13/13 21:16, Timon Gehr wrote:
> Currently there might be unnecessary overhead for returning a result if it is 
> not used. Since a property will usually hold on to the value, this can be a 
> problem if a struct is expensive to copy. Hence the implementer may choose to 
> not support multiple assignment for performance reasons (justified or, 
> usually, unjustified). Hence generic code cannot rely on multiple assignment 
> working, which is not nice.

Compiler optimization territory. The compiler can clone the function, create a 
copy that
doesn't return a result; callers that don't need one (and don't inline the 
callee) can
then use that clone. The case where a function always returns the argument 
(like property
setters will typically do) can also be handled more efficiently (yes; this can 
get a bit
more interesting, specially for non-pod types).

artur

Reply via email to