Scoped Imports for Structs/Classes/Template Constraints
jmh530 via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Aug 31 12:10:43 PDT 2015
I've been thinking about scoped imports. While it seems like you
can use scoped imports a lot of the time, it seems like there are
some potential cases where you can't. Most notably if a function
input is a struct or class, then I can't figure out a way to use
a scoped import. This also applies to template constraints I
think.
I put some code below to illustrate what I mean. The local import
has to apply to the entire app module in order for foo to work.
It can't only apply to the foo function the way that the
std.stdio import can. By contrast, bar uses a scoped import of S
(which works even if the first import is removed), but it means
that you can't pass s in.
Is there any way to use a scoped import of S with foo that I may
have overlooked?
module local;
struct S { int a = 2; }
module app;
import local : S;
void foo(S s)
{
import std.stdio : writeln;
writeln(s.a);
}
void bar()
{
import std.stdio : writeln;
import local : S;
S s;
writeln(s.a);
}
void main()
{
S s;
foo(s);
bar();
}
More information about the Digitalmars-d-learn
mailing list