Alternative to Interfaces
Kagamin
spam at here.lot
Sat Jan 19 09:24:21 UTC 2019
On Friday, 18 January 2019 at 18:48:46 UTC, Jonathan M Davis
wrote:
> Yes, but some D features will use the GC
They would like to allocate, but they don't know nor care where
it's allocated from, if the developer uses custom memory
management, he will know how it's allocated and will be able to
manage it.
> The list of such features is short, but delegates are on it.
Closures are, but not delegates. Delegate is just a pair of
pointers, you don't need to allocate at all to keep them around,
similar to slices. They even work in betterC.
> get around the allocations in some cases, but in general, if
> you use delegates, you're going to allocate with the GC.
Custom memory management is obviously not the general case.
> but the allocations that happen for delegates and lambdas is
> one of the biggest reasons that some folks avoid std.algorithm
> and complain that it allocates. That's what happens when you
> pass stuff that the compiler decides has to have closures
> allocated for it.
Is it really blocked? I got this to work with dip1000:
@safe @nogc:
alias int delegate(int) @safe @nogc dg;
struct Map(T)
{
private T a;
}
Map!dg map(return dg b)
{
Map!dg m;
m.a=b;
return m;
}
void f()
{
int a;
auto b=map(i=>a);
a=b.a(0);
}
Templated function can't infer closure type for some reason.
More information about the Digitalmars-d-learn
mailing list