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