Mixin declarations not showing up in ModuleInfo
Daniel Kozák via Digitalmars-d
digitalmars-d at puremagic.com
Mon Dec 1 23:38:32 PST 2014
V Tue, 02 Dec 2014 04:05:16 +0000
bitwise via Digitalmars-d <digitalmars-d at puremagic.com> napsáno:
> On Monday, 1 December 2014 at 07:28:28 UTC, Daniel Kozák via
> Digitalmars-d wrote:
> > V Mon, 01 Dec 2014 00:07:10 +0000
> > bitwise via Digitalmars-d <digitalmars-d at puremagic.com> napsáno:
> >
> >> > But I just try to say you can omit mixin word in template
> >> > declaration. Because it doesn't have any effect.
> >>
> >> mixin != mixin template != template
> > Yes and no :)
> >
> > import std.stdio;
> >
> > mixin template t1() {
> > int x = 5;
> > }
> >
> > void main(string[] args)
> > {
> > mixin t1;
> > writeln(x);
> > }
> >
> > is same as:
> >
> > import std.stdio;
> >
> > template t1() {
> > int x = 5;
> > }
> >
> > void main(string[] args)
> > {
> > mixin t1;
> > writeln(x);
> > }
>
> Heh... Guess you got me there ;)
>
> That is strange though... I don't see in the docs that mixin
> templates have been deprecated, and can't seem to find anything
> that doesn't work in both templates and mixin templates. The
> "mixin name" usage is also not present in the docs for regular
> templates.
There is one limitation of mixin template. You can not do this
(instantied mixin template):
import std.stdio;
mixin template t1() {
int x = 5;
}
void main(string[] args)
{
alias t1!() T;
writeln(T.x);
}
But this is valid:
import std.stdio;
template t1() {
int x = 5;
}
void main(string[] args)
{
alias t1!() T;
writeln(T.x);
}
More information about the Digitalmars-d
mailing list