In your case I would guess with -O -release -inline it would generate assambly with same (similar) speed.

But in this case it would be different:

mixin template Test()
{
    int returnInit() { return int.init; }
}


int returnInitImpl() { return int.init; }


class A
{
    mixin Test!(); // add virtual method
}

class B
{
    alias returnInit = returnInitImpl;
}


import std.stdio;

void main()
{
    auto a = new A();
    auto b = new B();

    a.returnInit().writeln;
    b.returnInit().writeln;
}

Dne 22.2.2016 v 15:12 Andrea Fontana via Digitalmars-d-learn napsal(a):
On Monday, 22 February 2016 at 13:56:19 UTC, anonymous wrote:
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.

Of course, but that's not the case.

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.

I wonder whether one version generates faster assembly or not.


Reply via email to