Lines Matching refs:Template
49 // 2. There is one caveat to the above: on or in a template pattern,
51 // visibility can be decreased by the visibility of template
54 // restrictions of the template arguments to be ignored.
75 // The visibility of a "secondary" entity, like a template argument,
79 // template <class T, bool (&compare)(T, X)> bool has_match(list<T>, X);
80 // template <class T, bool (&compare)(T, X)> class matcher;
95 /// the visibility of template arguments.
100 /// the visibility of template arguments.
105 /// restricted by the visibility of template arguments.
110 /// may only be restricted by the visibility of template arguments.
151 template <class T> static typename
162 /// For templates, this question is easier: a member template can't be
171 template <class T>
215 /// template parameter list. For visibility purposes, template
216 /// parameters are part of the signature of a template.
224 // Template type parameters are the most common and never
229 // Non-type template parameters can be restricted by the value type, e.g.
230 // template <enum X> class A { ... };
251 // Template template parameters can be restricted by their
252 // template parameters, recursively.
277 /// declarations in the given template argument list.
280 /// want to honor the visibility of template arguments in the same way.
308 case TemplateArgument::Template:
310 if (TemplateDecl *Template
312 LV.merge(getLVForDecl(Template, LVForValue));
319 llvm_unreachable("bad template argument kind");
332 // Include visibility from the template parameters and arguments
342 /// Merge in template-related linkage and visibility for the given
343 /// function template specialization.
355 // Merge information from the template parameters.
361 // Merge information from the template arguments.
386 /// Should we consider visibility associated with the template
387 /// arguments and parameters of the given class template specialization?
391 // Include visibility from the template parameters and arguments
396 // Furthermore, we want to ignore template parameters and arguments
409 // specialization, we always want to consider template-related
422 /// Merge in template-related linkage and visibility for the given
423 /// class template specialization.
429 // Merge information from the template parameters, but ignore
430 // visibility if we're only considering template arguments.
438 // Merge information from the template arguments. We ignore
439 // template-argument visibility if we've got an explicit
474 template <typename T> static bool isInExternCContext(T *D) {
488 // - an object, reference, function or function template that is
524 // A non-member function template can have internal linkage; any
525 // other template name shall have external linkage.
661 // Consider LV from the template and the template arguments.
680 // If this is a class template specialization, consider the
681 // linkage of the template and template arguments. We're at file
696 // - a template, unless it is a function template that has
732 // template arguments.
755 // thing that can change its visibility is the template arguments, so
782 // If this is a method template specialization, use the linkage for
783 // the template parameters and arguments.
824 // Template members.
842 // We should never be looking for an attribute directly on a template.
935 // If this is a member class of a specialization of a class template
944 // specialization of a class template, check for visibility
965 // Also handle function template specializations.
967 // If the function is a specialization of a template with an
974 // If the function is a member of a specialization of a class template
983 // The visibility of a template is stored in the templated decl.
1312 template <typename DeclT>
1370 // Set the template parameter lists info.
1432 "Empty array of template parameters with positive size!");
1434 // Free previous template parameters (if any).
1440 // Set info on matched template parameter lists (if any).
1499 template<typename T>
1528 template<typename T>
1561 // An explicit specialization of a static data member of a template is a
1678 // a class template, check whether that static data member was defined
2099 assert((!PrevDecl || PrevFunTmpl) && "Function/function template mismatch");
2456 // Find the actual template from which we will instantiate.
2493 // this template, we're done looking.
2510 return Info->Template.getPointer();
2541 FunctionTemplateDecl *Template,
2548 "Must specify the type of function template specialization");
2552 Info = FunctionTemplateSpecializationInfo::Create(C, this, Template, TSK,
2557 Template->addSpecialization(Info, InsertPos);
2595 // For a function template specialization, query the specialization
2629 llvm_unreachable("Function cannot have a template specialization kind");
2649 // class template, check whether that member function was defined out-of-line.
2656 // If this function was instantiated from a function template,
2657 // check whether that function template was defined out-of-line.
2935 // Set the template parameter lists info.