On Mon, 01 Sep 2014 10:57:41 +0000
evilrat via Digitalmars-d-learn <[email protected]>
wrote:

here's some more ugly hackery for you:

    string makeAlias(string aliasName, string Name, alias Replace) ()
    {
      static if ( __traits(compiles, (mixin(Name~`.sizeof`))) )
        return `alias `~aliasName~` = ` ~ Name ~ `;`;
      static if ( (is(Replace == class) || is(Replace == struct)) )
        return `alias `~aliasName~` = ` ~ Replace.stringof ~ `;`;
      assert(0);
    }


    struct A {}
    mixin(makeAlias!("coolStruct", "MyStruct", A));

or:

    mixin template makeAlias(string aliasName, string Name, alias Replace)
    {
      static if ( __traits(compiles, (mixin(Name~`.sizeof`))) )
        mixin(`alias `~aliasName~` = ` ~ Name ~ `;`);
      static if ( (is(Replace == class) || is(Replace == struct)) )
        mixin(`alias `~aliasName~` = ` ~ Replace.stringof ~ `;`);
      else static assert(0);
    }


    struct A {}
    mixin makeAlias!("coolStruct", "MyStruct", A);

Attachment: signature.asc
Description: PGP signature

Reply via email to