Can opApply be made @nogc?
rikki cattermole
rikki at cattermole.co.nz
Fri Oct 19 23:43:18 UTC 2018
On 20/10/2018 12:32 PM, solidstate1991 wrote:
> Since it's a bit difficult to make tree traversal through range
> (especially if someone wants to make it @nogc), I thought I'll make it
> through opApply override, however the delegate passed by it doesn't have
> the @nogc attribute, which would automatically make it incapable to be
> used in a @nogc context.
>
> I also don't know if it would work with structs instead of classes,
> since they're easier to handle in a @nogc situation.
class Foo
{
uint[2] array;
int opApply(scope int delegate(ref uint) @nogc dg) @nogc
{
int result = 0;
for (int i = 0; i < array.length; i++)
{
result = dg(array[i]);
if (result)
break;
}
return result;
}
}
void test()
{
Foo a = new Foo();
a.array[0] = 73;
a.array[1] = 82;
foreach (uint u; a)
{
printf("%d\n", u);
}
}
More information about the Digitalmars-d-learn
mailing list