Thread overview
template alias and instances
Aug 02, 2003
Mike Wynn
Aug 06, 2003
Walter
Aug 07, 2003
Mike Wynn
Aug 08, 2003
Walter
Aug 08, 2003
Mike Wynn
Aug 08, 2003
Mike Wynn
August 02, 2003
Walter,

if I have the code
template foo( T ) { class bar {.... } }

is there a difference in the way the compiler treats things if I do the
following in a module
alias instance foo(int) foo_int1;
instance foo(int) foo_int2;

are foo_int1 and foo_int2 effectivly the same, or are there reasons to use one or the other

alias foo_int1.bar bar_int1;
alias foo_int2.bar bar_int2;
alias instance foo(int).bar bar_int3;

would is make a difference which "bar_int" I used here ? class test : bar_int? { ... }





August 06, 2003
"Mike Wynn" <mike.wynn@l8night.co.uk> wrote in message news:bggtlv$fgb$1@digitaldaemon.com...
> Walter,
>
> if I have the code
> template foo( T ) { class bar {.... } }
>
> is there a difference in the way the compiler treats things if I do the
> following in a module
> alias instance foo(int) foo_int1;
> instance foo(int) foo_int2;
>
> are foo_int1 and foo_int2 effectivly the same, or are there reasons to use one or the other

They're the same.

> alias foo_int1.bar bar_int1;
> alias foo_int2.bar bar_int2;
> alias instance foo(int).bar bar_int3;
>
> would is make a difference which "bar_int" I used here ? class test : bar_int? { ... }

They're all the same.


August 07, 2003
"Walter" <walter@digitalmars.com> wrote in message news:bgrdpm$16pq$1@digitaldaemon.com...
>
> "Mike Wynn" <mike.wynn@l8night.co.uk> wrote in message news:bggtlv$fgb$1@digitaldaemon.com...
> > Walter,
> >
> > if I have the code
> > template foo( T ) { class bar {.... } }
> >
> > is there a difference in the way the compiler treats things if I do the
> > following in a module
> > alias instance foo(int) foo_int1;
> > instance foo(int) foo_int2;
> >
> > are foo_int1 and foo_int2 effectivly the same, or are there reasons to
use
> > one or the other
>
> They're the same.
>
> > alias foo_int1.bar bar_int1;
> > alias foo_int2.bar bar_int2;
> > alias instance foo(int).bar bar_int3;
> >
> > would is make a difference which "bar_int" I used here ? class test : bar_int? { ... }
>
> They're all the same.
>

that explains why my missing instances from objects example fails even when I declare instances all over the place rather than aliases.

is there a way to force the creation within an object file of an instance of a template with given params (I assume the linker would be smart enought to only link the onces needed ? or is there a way to create an object file that is just a ast of the file :) recompiled at link times so templates that are needed get created ?


August 08, 2003
"Mike Wynn" <mike.wynn@l8night.co.uk> wrote in message news:bgu2mq$mfg$1@digitaldaemon.com...
> that explains why my missing instances from objects example fails even
when
> I declare instances all over the place rather than aliases.

Not really. It should generate the instance again, and then the linker should factor out the duplicates. Something else is going wrong for you. If you could make a small example of an instance that is not being generated, I can have a look.


August 08, 2003
I thought I posted it .....

build .bat (as attached)

dmd -c helpers.d
lib mylib +-helpers.obj,,
dmd -c main.d
set LIB=c:\dmd\lib;c:\dm\lib
link main.obj,main,,mylib+phobos+snn+uuid/noi



"Walter" <walter@digitalmars.com> wrote in message news:bgv9ph$1pta$1@digitaldaemon.com...
>
> "Mike Wynn" <mike.wynn@l8night.co.uk> wrote in message news:bgu2mq$mfg$1@digitaldaemon.com...
> > that explains why my missing instances from objects example fails even
> when
> > I declare instances all over the place rather than aliases.
>
> Not really. It should generate the instance again, and then the linker should factor out the duplicates. Something else is going wrong for you.
If
> you could make a small example of an instance that is not being generated,
I
> can have a look.
>
>





August 08, 2003
fool! (me that is)
posted the version with alias's
save build different files.
still gives

main.obj(main)
 Error 42: Symbol Undefined
_Dhelpers__L8Interface__0_cast_to_FPS8com_GUIDC6Obje
ctPPvZi

"Mike Wynn" <mike.wynn@l8night.co.uk> wrote in message news:bgvcev$1s6r$1@digitaldaemon.com...
> I thought I posted it .....
>
> build .bat (as attached)
>
> dmd -c helpers.d
> lib mylib +-helpers.obj,,
> dmd -c main.d
> set LIB=c:\dmd\lib;c:\dm\lib
> link main.obj,main,,mylib+phobos+snn+uuid/noi
>
>