On Friday, 27 December 2019 at 18:22:10 UTC, Sjoerd Nijboer wrote:
When calling the mixin directly instead of through the template mixin it breaks with thesame error message.

What exactly did you do here?

struct C
{
        static foreach (m; mixins)
        {
                mixin(m);
        }
}

works for me...

I don't know if this an actual compiler bug or if this is me not properly understanding D.

This is a case of the function hijacking rules biting you: https://dlang.org/articles/hijack.html

template mixins take things in two different scopes:

mix!one_string
mix!other_string

creates two separate things that do not overload each other. You have to `alias name = xxx` twice in the same scope to merge them.

string mixin works differently, it doesn't produce a scope. In your case you probably just want to use string mixin and take the `mix` item out entirely.

But anyway the mixin results from the two things do NOT automatically merge whcih is what causes your errors.

Reply via email to