auto foo(Args...)(ref Args args)
{
    with (Module!"std.conv")
    with (Module!"std.stdio") {
        return () => {
            string[] s;
            foreach (i, arg; args) {
                static if (is(Args[i] == string)) {
                    s ~= arg;
                } else {
                    s ~= to!string(arg);
                }
            }

            debug writeln(fmt());
            return cast(immutable)s;
        }();
    }
}

template Module(string name)
{
    mixin("import Module = " ~ name ~ ";");
}

void main()
{
    static immutable i = 7;
    static immutable s = "teen";

    static immutable res = foo(i, s)();
    writeln(res);
}

I desire to call foo() at compile... As implemented it does not happen, but it's not immediately clear what I am missing. Or is this simply not possible as yet? What is the proper way to redesign this template so that it will execute at compile time?

Thanks,
Andrew

Reply via email to