Function scope arguments

Timon Gehr timon.gehr at gmx.ch
Tue Jan 15 06:09:37 PST 2013


On 01/15/2013 01:44 PM, Artur Skawina wrote:
> On 01/15/13 12:48, deadalnix wrote:
>> On Tuesday, 15 January 2013 at 10:58:17 UTC, Artur Skawina wrote:
>>> Different problem - lifetime. One approach would be to disallow escaping
>>> them (which in this case includes returning them) unless the compiler is
>>> able to do the right - ie the body of the function is available. Somewhat
>>> unorthodox, but could work. (The problem are not the trivial cases; it's the
>>> ones where the compiler has no idea which ref is escaped/returned at runtime)
>>>
>>
>> The compiler should assume they may escape unless scope is specified.
>
> This is about /avoiding/ "hidden" heap allocations as much as possible. Having
> functions with 'ref' and 'auto-ref' args always trigger them is not ideal.
>
> 'lazy' args are already problematic enough. (there's currently no way to mark
> them as non-escaping, the compiler has to assume that the do -> the result is
> that they /always/ cause heap allocations and you have to use explicit scoped
> delegates instead, losing the syntax advantages)
>
> artur
>

Actually lazy args are implicitly 'scope' and never allocate.


More information about the Digitalmars-d mailing list