On Monday, 22 February 2016 at 13:35:10 UTC, Andrea Fontana wrote:
Check this code:
http://dpaste.dzfl.pl/fcf876acbbdc

Structs A and B do the same things, in different way.

Is there any difference/limitation between those?

Andrea

The mixin variant generates a method. That means, you can reference members of the struct in the function.

Silly example:
----
mixin template Test(T)
{
    auto returnX() { return x; }
}
struct A
{
    int x;
    mixin Test!int;
}
----

With the alias variant you get an alias to a free function, not a method. So you couldn't reference x like above.

What's nicer about the alias version is that you see what symbol is being generated. It's obvious that `alias returnInit = returnInitImpl!int;` creates a symbol "returnInit". In the mixin variant, you have to read the template's source to see that.

Reply via email to