[cfe-dev] Confused by getPointOfInstantiation() of ClassTemplateSpecializationDecl

Limin Fu phoolimin at gmail.com
Thu Jul 7 15:21:10 PDT 2011

Hi John,
Thank you for the explanation. It's clear now. I will use
the ParmVarDecl::getLocation() for the parameter instead.


On Thu, Jul 7, 2011 at 3:03 PM, John McCall <rjmccall at apple.com> wrote:

> On Jul 7, 2011, at 2:51 PM, Limin Fu wrote:
> > Hello,
> >
> > I am trying to handle C++ templates in my automatic binding tool based on
> Clang. I run into a problem that requires to determine the location of the
> first instantiation of a template class.
> >
> > Basically, I have a file that declares a function with parameter of type
> "std::vector<MyClass>". From the FunctionDecl of that function, I get a
> TemplateSpecializationType object and then a ClassTemplateSpecializationDecl
> object for the parameter type. I thought method getPointOfInstantiation() of
> ClassTemplateSpecializationDecl will give a location in my file, but
> instead, it gives a location from stl_vector.h.
> >
> > Isn't the instantiation point supposed to be located in my file? Or am I
> understanding something wrong here? Thanks a lot.
> The point of instantiation is the location that actually first forced your
> template to be instantiated.  Just writing the template specialization type
> won't do that — it can stay an incomplete type up until something actually
> tries to look at its members or bases.
> John.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20110707/19577136/attachment.html>

More information about the cfe-dev mailing list