On 07/15/2013 08:43 PM, JS wrote:

> http://dpaste.dzfl.pl/7c8b0ba9
>
> Why the heck can't we use integers in ctfe's?

That is false:

import std.range;
import std.algorithm;
import std.conv;
import std.stdio;

string makeCode(int begin, int end)
{
    auto result = appender!string(`enum made = "`);

    iota(begin, end)
        .map!(a => a.to!string)
        .joiner(", ")
        .copy(result);

    result ~= `";`;

    return result.data;
}

unittest
{
    assert(makeCode(3, 7) == `enum made = "3, 4, 5, 6";`);
}

void main()
{
    mixin (makeCode(-3, 3));
    writeln(made);
}

> There seems to be no
> simple way to create a counter and this is one of the most basic
> programming constructs to use..

That would be pretty limiting, right?

> yet with ctfe's it's impossible.

I have a feeling that you had something else in mind.

> I'd like each variable in the nested structs to be incremented properly.

It should be simple to convert the code above to do that.

Ali

Reply via email to