This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: PR3042


>>>>> "David" == David Edelsohn <dje@watson.ibm.com> writes:

> 	Are multiple modules with
>   template <typename T>
>   int S<double>::i = 1;

This is not valid C++.

>   template <typename T>
>   int S<T>::i = 1;

> allowed?  I would have thought that at least the former would produce a
> STRONG symbol in the data section.

No.  The template definition itself does not generate anything.  If it did
(i.e. for an implementation of export), it would be weak.

If something refers to, say, S<double>::i, an implicit instantiation is
generated from the template.  This is also weak.

> 	Both of the examples produces references but no storage allocation
> in GCC 3.0.  Without an assignment, both produce common symbols.

Yes, because we can't express a weak definition on AIX except for
zero-initialized things, so we don't emit anything.

> 	Is Mark's proposal that only

>   template <typename T>
>   int S<double>::i;

> was suppose to allocate storage?

No, his proposal is that no storage would be allocated with or without an
assignment.

Jason


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]