On Wednesday, 10 February 2021 at 12:17:43 UTC, rm wrote:
On 09/02/2021 5:05, frame wrote:
On Sunday, 7 February 2021 at 14:13:18 UTC, vitamin wrote:
Why using 'new' is allowed in pure functions but calling GC.addRange or GC.removeRange isn't allowed?

Does 'new' violate the 'pure' paradigm? Pure functions can only call pure functions and GC.addRange or GC.removeRange is only 'nothrow @nogc'.

new allocates memory via the GC and the GC knows to scan this location. Seems like implicit GC.addRange.

Yes, this is my problem, if `new` can create object in pure function, then GC.addRange and GC.removeRange is may be pure too.

Can I call GC.addRange and GC.removeRange from pure function without problem? (using assumePure(...)() ).

Reply via email to