import in mixin template
vitus via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed May 25 23:56:26 PDT 2016
On Thursday, 26 May 2016 at 05:47:36 UTC, Era Scarecrow wrote:
> On Thursday, 26 May 2016 at 05:20:25 UTC, vitus wrote:
>> Why 'alias wln1 = writeln;' doesnt't work but 'alias wln2 =
>> std.stdio.writeln;' work when import is not static? Why
>> 'wln2("test");' work but 'std.stdio.writeln("test");' doesn't?
>> (changing import to static import doesn't change anything)
>
> The import seems to be localized to just the mixin & the
> template. Makes sense since you don't want to be cluttering the
> namespace with other imports.
>
> The only thing you haven't shown is that the 'alias m' is
> identified and accessible. Adding it in the compiler doesn't
> complain; Only line 11 (alias wln1) complains for me DMD w32
> v2.071.0.
But why is 'std.stdio.writeln' accessible from CLASS but writeln
no? Both are imported in MIXIN.
and:
mixin template MIXIN(){
import std.stdio;
}
class CLASS{
mixin MIXIN;
void test(){
alias wln = std.stdio.writeln; //OK
wln("test"); //OK
std.stdio.writeln("test"); //Error: Deprecation: module
std.stdio is not accessible here, perhaps add 'static import
std.stdio;'
}
}
Why is possible create alias to function 'std.stdio.writeln' but
cannot by called as a function directly?
More information about the Digitalmars-d-learn
mailing list