Using template mixin, with or without mixin ?

ag0aep6g via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Apr 8 15:37:18 PDT 2017


On 04/08/2017 11:59 PM, Meta wrote:
> enum a = 0;
>
> template test1()
> {
>     enum b1 = a; //Okay, a is in scope at the declaration site
>     //enum c = d1; Error: undefined identifier d1

This line works just fine, actually. There's really no difference 
between a normal template and a mixin template when you use it in a mixin.

> }
>
> mixin template test2()
> {
>     enum b2 = a; //Okay, a is in scope at the declaration site
>     enum c = d1; //Okay, d1 is in scope at the *instantiation* site
>     //enum e = d2; Error: undefined identifier d2
> }
>
> void main()
> {
>     enum d1 = 0; //<--d1 is declared here
>     mixin test1!();
>     mixin test2!(); //<--so it is in scope here
>     enum d2 = 0; //d2 was not declared before test2 was mixed in
>                      //so it is not in scope for test2
> }



More information about the Digitalmars-d-learn mailing list