Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
October 15, 2001 template instantiation | ||||
---|---|---|---|---|
| ||||
In the following test-case, the template function isn't instantiated (linker
complains with "Symbol Undefined ?f@@YAHH@Z (int cdecl f(int ))"):
template<class T> int f(T a);
int main(int argc, char *argv[])
{
int a = 0;
return f(a);
}
template<class T> int f(T a)
{
return 0;
}
and DM doesn't support explicit template instantiation, e.g.
template<class T>
struct A
{
void f()
{ }
};
template A<int>;
bye, Christof
--
http://cmeerw.cjb.net Jabber: cmeerw@jabber.at mailto cmeerw at web.de ICQ: 93773535, Yahoo!: cmeerw
...and what have you contributed to the Net?
|
October 16, 2001 Re: template instantiation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Christof Meerwald |
Christof Meerwald wrote:
> In the following test-case, the template function isn't instantiated (linker
> complains with "Symbol Undefined ?f@@YAHH@Z (int cdecl f(int ))"):
>
> template<class T> int f(T a);
>
> int main(int argc, char *argv[])
> {
> int a = 0;
> return f(a);
> }
>
> template<class T> int f(T a)
> {
> return 0;
> }
>
> and DM doesn't support explicit template instantiation, e.g.
>
> template<class T>
> struct A
> {
> void f()
> { }
> };
>
> template A<int>;
>
> bye, Christof
>
> --
> http://cmeerw.cjb.net Jabber: cmeerw@jabber.at mailto cmeerw at web.de ICQ: 93773535, Yahoo!: cmeerw
>
> ...and what have you contributed to the Net?
You don't say what compiler options you used. When I get messages like this I retry with -XD added.
John
|
October 16, 2001 Re: template instantiation | ||||
---|---|---|---|---|
| ||||
Posted in reply to John Fletcher | Yes, -XD will make it work with the existing compiler, but I wanted to fix it so it worked automatically. -Walter John Fletcher wrote in message <3BCBF5E9.83FE7752@aston.ac.uk>... > > >Christof Meerwald wrote: > >> In the following test-case, the template function isn't instantiated (linker >> complains with "Symbol Undefined ?f@@YAHH@Z (int cdecl f(int ))"): >> >> template<class T> int f(T a); >> >> int main(int argc, char *argv[]) >> { >> int a = 0; >> return f(a); >> } >> >> template<class T> int f(T a) >> { >> return 0; >> } >> >> and DM doesn't support explicit template instantiation, e.g. >> >> template<class T> >> struct A >> { >> void f() >> { } >> }; >> >> template A<int>; >> >> bye, Christof >> >> -- >> http://cmeerw.cjb.net Jabber: cmeerw@jabber.at mailto cmeerw at web.de ICQ: 93773535, Yahoo!: cmeerw >> >> ...and what have you contributed to the Net? > >You don't say what compiler options you used. When I get messages like this I >retry with -XD added. > >John > > |
October 16, 2001 Re: template instantiation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | On Tue, 16 Oct 2001 11:42:43 -0700, Walter wrote: > Yes, -XD will make it work with the existing compiler, but I wanted to fix it so it worked automatically. -Walter Thanks for fixing it. >>> and DM doesn't support explicit template instantiation, e.g. and the '-XI' command line option doesn't seem to work for class templates. >>> template<class T> >>> struct A >>> { >>> void f() >>> { } >>> }; If I compile it with 'sc -c -cod "-XIA<int>"' no code for the instantiation is generated. bye, Christof -- http://cmeerw.cjb.net Jabber: cmeerw@jabber.at mailto cmeerw at web.de ICQ: 93773535, Yahoo!: cmeerw ...and what have you contributed to the Net? |
October 16, 2001 Re: template instantiation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Christof Meerwald | The XI is a holdover from the bad old days before comdat's. Do you need it? "Christof Meerwald" <cmeerw@web.de> wrote in message news:9qi0v7$2gvh$1@digitaldaemon.com... > On Tue, 16 Oct 2001 11:42:43 -0700, Walter wrote: > > Yes, -XD will make it work with the existing compiler, but I wanted to fix > > it so it worked automatically. -Walter > > Thanks for fixing it. > > > >>> and DM doesn't support explicit template instantiation, e.g. > > and the '-XI' command line option doesn't seem to work for class templates. > > >>> template<class T> > >>> struct A > >>> { > >>> void f() > >>> { } > >>> }; > > If I compile it with 'sc -c -cod "-XIA<int>"' no code for the instantiation > is generated. > > > bye, Christof > > -- > http://cmeerw.cjb.net Jabber: cmeerw@jabber.at mailto cmeerw at web.de ICQ: 93773535, Yahoo!: cmeerw > > ...and what have you contributed to the Net? |
October 17, 2001 Re: template instantiation | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | On Tue, 16 Oct 2001 15:12:08 -0700, Walter wrote: > The XI is a holdover from the bad old days before comdat's. Do you need it? I would prefer the standard C++ explicit template instantiation. STLport's I/O stream library makes heavy use of it (I was just looking for an alternative). bye, Christof -- http://cmeerw.cjb.net Jabber: cmeerw@jabber.at mailto cmeerw at web.de ICQ: 93773535, Yahoo!: cmeerw ...and what have you contributed to the Net? |
Copyright © 1999-2021 by the D Language Foundation