CTFE and BetterC compatibility
    rikki cattermole 
    rikki at cattermole.co.nz
       
    Wed Apr 27 14:34:27 UTC 2022
    
    
  
This works:
```d
struct Data
{
     int[] digits;
}
int parseDigit(char c) pure
{
     return c - '0';
}
Data parse(string str) pure
{
     Data data;
     if (__ctfe) {
         size_t used;
         data.digits.length = str.length;
         while (str.length != 0)
         {
             // Skip spaces
             while (str[0] == ' ')
                 str = str[1 .. $];
             // Parse single digit integer
             data.digits[used++] = parseDigit(str[0]);
             // Consume digit
             str = str[1 .. $];
         }
         data.digits = data.digits[0 .. used];
     }
     return data;
}
enum Data parsedData = parse("5 4 2 6 9");
extern(C) int main()
{
     pragma(msg, "First digit=", parsedData.digits[0]);
     return 0;
}
```
    
    
More information about the Digitalmars-d-learn
mailing list