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;
}
```

Reply via email to