On Friday, 15 July 2016 at 17:00:09 UTC, jmh530 wrote:
I was working with the lightweight wrapper and it seemed to work for simple stuff, but then I started getting a bunch of errors when I tried to integrate it in to my project.

Below is the stripped down version of what I've been working with. I think the problem is that I can't get the fillAliasSeq template to work with aliases. If I change Foo to just take types and pass something like int or float, then it works fine.

Note, I originally had fillAliasSeq as a nested template within bar, but this was causing errors similar to what is brought up in this thread
http://forum.dlang.org/post/mailman.578.1343005779.31962.digitalmars-d-le...@puremagic.com

Your issue is this line:

alias boxAR(A) = Box!(A, R);

This means that A must be a type, but you are trying to instantiate it with lambdas. If you switch to:

alias boxAR(alias A) = Box!(A, R);

But now you are back to the "local '__lambda1' as parameter to non-global template" error.

Have you considered recursive solutions?

template fillAliasSeq(R, f...)
{
        import std.meta : AliasSeq;
        
        static if (f.length == 0) {
            alias fillAliasSeq = AliasSeq!();
    }
    else {
alias fillAliasSeq = AliasSeq!(Foo!(f[0], R), fillAliasSeq!(R, f[1..$]));
        }
}

Reply via email to