Thread overview | ||||||
---|---|---|---|---|---|---|
|
March 15, 2015 mixin template can't contain statements: workaround? | ||||
---|---|---|---|---|
| ||||
Attachments:
| 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). |
March 15, 2015 Re: mixin template can't contain statements: workaround? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Timothee Cour | 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?
|
March 15, 2015 Re: mixin template can't contain statements: workaround? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Timothee Cour Attachments: | 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.
|
March 15, 2015 Re: mixin template can't contain statements: workaround? | ||||
---|---|---|---|---|
| ||||
Posted in reply to ketmar Attachments: | On Sun, 15 Mar 2015 13:28:33 +0000, 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 `+`... ;-)
|
Copyright © 1999-2021 by the D Language Foundation