Re: mixin template can't contain statements: workaround?

2015-03-15 Thread ketmar via Digitalmars-d-learn
On Sun, 15 Mar 2015 13:28:33 +, ketmar wrote:

 template Foo(int a, string b) {
   import std.format : format;
   enum Foo = q{
 {
   import std.conv : to; return %2$s+to!string(%1$s);
 }
   }.format(a, b.stringof);
 }
 
 positional args, syntax highlighting, usage like `mixin(Foo!(42,
 z));`.
 maybe this will help.

ah, that `+`... ;-)

signature.asc
Description: PGP signature


Re: mixin template can't contain statements: workaround?

2015-03-15 Thread ketmar via Digitalmars-d-learn
On Sat, 14 Mar 2015 18:20:47 -0700, Timothee Cour via Digitalmars-d-learn
wrote:

 Why can't we allow mixin templates to contain statements, as is the case
 for regular mixins?
 Is there a workaround?
 
 here's a dummy example:
 
 template mixin Foo{
  //some statement, eg: 'return;'
 }
 
 void fun(){
   mixin Foo;
 }
 
 Note that I can do this with a regular mixin, but template mixins are
 cleaner (esp in more complex examples).

template Foo(int a, string b) {
  import std.format : format;
  enum Foo = q{
{
  import std.conv : to;
  return %2$s+to!string(%1$s);
}
  }.format(a, b.stringof);
}

positional args, syntax highlighting, usage like `mixin(Foo!(42, z));`.
maybe this will help.

signature.asc
Description: PGP signature


mixin template can't contain statements: workaround?

2015-03-14 Thread Timothee Cour via Digitalmars-d-learn
Why can't we allow mixin templates to contain statements, as is the case
for regular mixins?
Is there a workaround?

here's a dummy example:

template mixin Foo{
 //some statement, eg: 'return;'
}

void fun(){
  mixin Foo;
}

Note that I can do this with a regular mixin, but template mixins are
cleaner (esp in more complex examples).


Re: mixin template can't contain statements: workaround?

2015-03-14 Thread Meta via Digitalmars-d-learn

On Sunday, 15 March 2015 at 01:20:55 UTC, Timothee Cour wrote:
Why can't we allow mixin templates to contain statements, as is 
the case

for regular mixins?
Is there a workaround?

here's a dummy example:

template mixin Foo{
 //some statement, eg: 'return;'
}

void fun(){
  mixin Foo;
}

Note that I can do this with a regular mixin, but template 
mixins are

cleaner (esp in more complex examples).


Wouldn't the most basic explanation be that templates cannot 
contain statements, therefore mixin templates can't either?