How can I tell D that function args are @nogc etc.
    Richard (Rikki) Andrew Cattermole 
    richard at cattermole.co.nz
       
    Wed Apr 10 11:34:06 UTC 2024
    
    
  
Place your attributes on the right hand side of the function, not the 
left side.
Use the left side for attributes/type qualifiers that go on the return type.
```d
bool[7] stagesToProcess = false;
bool shouldDoInStages(int index) @nogc nothrow @safe
{
      return stagesToProcess[index];
}
bool shouldDoNever(int index) @nogc nothrow @safe
{
      return false;
}
template processSafely(int low, int high)
{
      alias ShouldDoFnT = bool function(int) @nogc nothrow @safe;
      uint processSafely(ShouldDoFnT shouldDo) @nogc nothrow @safe
      {
          assert(low < high);
          uint stepsProcessed;
          for (int ii = low; ii <= high; ii++)
          {
              if (shouldDo(ii))
              {
                  stepsProcessed++;
              }
          }
          return stepsProcessed;
      }
}
void main()
{
      stagesToProcess = [false, false, true, true, false, true,
false];
      uint count = processSafely!(1, 4)(&shouldDoInStages);
      assert(count == 2);
}
```
    
    
More information about the Digitalmars-d-learn
mailing list