Question about explicit template instantiation
Janice Caron
caron800 at googlemail.com
Sun Feb 10 15:14:51 PST 2008
On 10/02/2008, Edward Diener <eddielee_no_spam_here at tropicsoft.com> wrote:
> I still do not understand what the object used for the instantiation is.
> In your example above what is:
>
> A!(int)
>
> ? Is it some kind of namespace ?
Yes. It is exactly a namespace.
> Can I say:
>
> A!(int) x;
>
> ?
Sometimes, but only in special case. If you don't specify a member of
the namespace, then the compiler will /assume/ a member whose name is
the same as that of the template. So, if we have:
template A(T)
{
int A;
}
then
A!(int) x;
would be shorthand for
A!(int).A x;
But if there wasn't an A in the namespace, then it wouldn't compile.
That little "trick" is really, really useful, because it can make for
a lot less typing. So - in general - A!(T) with no member, is the same
thing as A!(T).A, if A!(T).A exists.
/What/ is it, depends. It's whatever A!(T).A is.
More information about the Digitalmars-d
mailing list