Re: template keyword needed
George <George@discussions.microsoft.com> wrote:
For the following code, I think you mean vector as a template
(incomplete) class
I'm not sure what you mean by "template (incomplete) class". "Class
template" and "incomplete type" are two separate, unrelated terms.
is not a name dependent on template parameter T,
but v which is a type of vector<T>&, is a name dependent on template
parameter T.
No. Regardless of what T is, it's clear that 'v' refers to the function
parameter, and that it's an object and not a type. Similarly, regardless
of what T is, std::vector<T> unambigouosly refers to an instantiation of
a template declared in <vector> header, and it's a type and not an
object. Neither is a dependent name.
A dependent name is a name where you cannot even figure out which
declaration it refers to until you substitute actual values for template
parameters. E.g. T::inner would be a dependent name depending on T. So
would be 'f' in the following fragment:
template <typename T>
void g(T& x) { f(x); }
You need to know what T is in order to know which namespaces are
associated with it, because f() may be found in those namespaces by
argument-dependent lookup (ADL).
--
With best wishes,
Igor Tandetnik
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925