On Sunday, 7 June 2015 at 14:17:45 UTC, Artur Skawina wrote:
On 06/07/15 11:05, Jeffrey Tsang via Digitalmars-d wrote:
I use a mixin template to define exactly one symbol, and at instantiation I wish to use that symbol immediately, once.

AFAICT you're asking for the commented-out line in

   auto Tmpl() = l;

   void main(string[] argv) {
      auto l = argv.length;
      mixin Tmpl!() a;
      assert(a.Tmpl==l);
      //assert(a==l);
   }

to work. That would probably be enough, make sense and have
no serious backward compat issues.

artur

There are three separate things I would like to have:

1. Eponymous trick

mixin T foo(T)() {
    return bar;
}

as pure syntactic sugar for

mixin template foo(T) {
    T foo() {
        return bar;
    }
}

2. Eponymous trick, calling end

mixin foo!T;

to also include as syntactic support

alias foo = foo!T.foo;

as well as the named version you listed.

3. Inline/anonymous mixins

Some way of writing the equivalent of

bar = (mixin foo!T)() + 3;

inline as an expression, the same way as

bar = regular_template_foo!T() + 3;

Reply via email to