[cfe-dev] Template attributes lose their inherited flag on instantiations

Nico Rieck nico.rieck at gmail.com
Tue Apr 16 00:59:17 PDT 2013


I noticed that when a template is instanciated and all attributes are 
pulled over (using sema::instantiateTemplateAttribute), inheritable 
attributes lose their inherited flag. Is this a bug/an oversight or 
intended behavior?

In my case the inherited status is used to distinguish between 
DLLImportAttr/DLLExportAttr applied directly to class members and 
inherited from the class. When those attributes are applied to a class 
template, and in turn applied to class members with the inherited flag 
set, this distinction is lost for the members of the template instantiation.

I changed the generated code to propagate the flag and it doesn't seem 
to break anything. So at least nothing tested seems to rely on that.


More information about the cfe-dev mailing list