On Sunday, 25 February 2018 at 02:37:00 UTC, Jonathan M Davis wrote:
If any exceptions could be thrown, then a lazy solution can't be @nogc (something that's often the case with strings thanks to auto-decoding and UTFExceptions), and a solution could be eager without allocating if the result doesn't require any allocation.

FYI -dip1008 is a thing now and part of 2.079.
See also:

https://dlang.org/changelog/pending.html#dip1008
https://run.dlang.io/is/clNX6G
https://github.com/dlang/DIPs/blob/master/DIPs/DIP1008.md


Also, you could have a lazy range that involves a lambda that allocates a closure.

Of course, or a @nogc range that allocates with malloc or eagerly steps through the entire range.

Anyhow I just mentioned it because it's the best form of automatic checking that we have (what the OP was asking for) and in many cases when an algorithm can't be @nogc it does allocate somewhere which is a red flag.

Reply via email to