Lines Matching full:template
48 /// behavior specific to that transformation. For example, template
51 /// template arguments for their corresponding template parameters; a similar
52 /// transformation is performed for non-type template parameters and
53 /// template template parameters.
55 /// This tree-transformation template uses static polymorphism to allow
80 /// replacing TransformTemplateTypeParmType() allows template instantiation
81 /// to substitute template arguments for their corresponding template
94 template<typename Derived>
97 /// the template argument corresponding to a partially-substituted parameter
146 /// We must always rebuild all AST nodes when performing variadic template
200 /// not change. For example, template instantiation need not traverse
238 /// when extending explicitly-specified template argument packs per
263 /// \brief "Forget" about the partially-substituted pack template argument,
267 /// This routine is meant to be overridden by the template instantiator.
272 /// \brief "Remember" the partially-substituted pack template argument
276 /// This routine is meant to be overridden by the template instantiator.
472 /// \brief Transform the given template name.
474 /// \param SS The nested-name-specifier that qualifies the template
477 /// \param Name The template name to transform.
479 /// \param NameLoc The source location of the template name.
481 /// \param ObjectType If we're translating a template name within a member
482 /// access expression, this is the type of the object whose member template
489 /// By default, transforms the template name by transforming the declarations
490 /// and nested-name-specifiers that occur within the template name.
498 /// \brief Transform the given template argument.
501 /// declaration stored within the template argument and constructs a
502 /// new template argument from the transformed result. Subclasses may
510 /// \brief Transform the given set of template arguments.
512 /// By default, this operation transforms all of the template arguments
518 /// should override the iterator-based member template version.
520 /// \param Inputs The set of template arguments to be transformed.
522 /// \param NumInputs The number of template arguments in \p Inputs.
524 /// \param Outputs The set of transformed template arguments output by this
536 /// \brief Transform the given set of template arguments.
538 /// By default, this operation transforms all of the template arguments
542 /// \param First An iterator to the first template argument.
544 /// \param Last An iterator one step past the last template argument.
546 /// \param Outputs The set of transformed template arguments output by this
550 template<typename InputIterator>
571 template<typename Fn>
588 TemplateName Template);
593 TemplateName Template,
859 /// \brief Build a new template specialization type.
861 /// By default, performs semantic analysis when building the template
864 QualType RebuildTemplateSpecializationType(TemplateName Template,
890 /// \brief Build a new typename type that refers to a template-id.
901 // Rebuild the template name.
1049 /// \brief Build a new template name given a nested name specifier, a flag
1050 /// indicating whether the "template" keyword was provided, and the template
1051 /// that the template name refers to.
1053 /// By default, builds the new template name directly. Subclasses may override
1057 TemplateDecl *Template);
1059 /// \brief Build a new template name given a nested name specifier and the
1060 /// name that is referred to as a template.
1063 /// be resolved to a specific template, then builds the appropriate kind of
1064 /// template name. Subclasses may override this routine to provide different
1072 /// \brief Build a new template name given a nested name specifier and the
1073 /// overloaded operator name that is referred to as a template.
1076 /// be resolved to a specific template, then builds the appropriate kind of
1077 /// template name. Subclasses may override this routine to provide different
1084 /// \brief Build a new template name given a template template parameter pack
1088 /// be resolved to a specific template, then builds the appropriate kind of
1089 /// template name. Subclasses may override this routine to provide different
1917 // FIXME: loses template args.
2272 /// The semantic analysis provides the behavior of template instantiation,
2602 /// \brief Build a new template-id expression.
2947 /// \brief Build a new template argument pack expansion.
2950 /// for a template argument. Subclasses may override this routine to provide
2966 case TemplateArgument::Template:
3058 template<typename Derived>
3090 template<typename Derived>
3108 template<typename Derived>
3125 template<typename Derived>
3203 template<typename Derived>
3318 template<typename Derived>
3431 template<typename Derived>
3482 template<typename Derived>
3490 TemplateDecl *Template = QTN->getTemplateDecl();
3491 assert(Template && "qualified template name must refer to a template");
3495 Template));
3501 TransTemplate == Template)
3510 // These apply to the scope specifier, not the template.
3532 if (TemplateDecl *Template = Name.getAsTemplateDecl()) {
3535 Template));
3540 TransTemplate == Template)
3566 template<typename Derived>
3573 llvm_unreachable("null template argument in TreeTransform");
3582 case TemplateArgument::Template:
3585 TemplateName Template = Arg.getAsTemplate();
3586 if (DependentTemplateName *DTN = Template.getAsDependentTemplateName())
3588 else if (QualifiedTemplateName *QTN = Template.getAsQualifiedTemplateName())
3591 if (Arg.getKind() == TemplateArgument::Template)
3616 template<typename Derived>
3641 case TemplateArgument::Template: {
3651 TemplateName Template
3654 if (Template.isNull())
3657 Output = TemplateArgumentLoc(TemplateArgument(Template), QualifierLoc,
3666 // Template argument expressions are constant expressions.
3685 /// \brief Iterator adaptor that invents template argument location information
3686 /// for each of the template arguments in its underlying iterator.
3687 template<typename Derived, typename InputIterator>
3744 template<typename Derived>
3745 template<typename InputIterator>
3758 // all of the template arguments in the argument pack.
3868 template<typename Derived>
3886 template<typename Derived>
3906 template<typename Derived>
3924 /// types). This is the right thing for template instantiation, but
3926 template<typename Derived>
3937 // FIXME: this is the right thing for template instantiation, but
3949 // A lifetime qualifier applied to a substituted template parameter
3950 // overrides the lifetime qualifier from the template argument.
3965 // 'auto' types behave the same way as template parameters.
3996 template<typename Derived>
4012 template<typename Derived>
4025 template <typename Derived>
4039 TemplateName Template
4044 if (Template.isNull())
4048 Template);
4053 TemplateName Template
4058 if (Template.isNull())
4063 Template,
4076 template <class TyLoc> static inline
4083 template<typename Derived>
4093 template<typename Derived>
4100 template <typename Derived>
4107 template<typename Derived>
4123 template<typename Derived>
4160 template<typename Derived>
4187 template<typename Derived>
4224 template<typename Derived>
4231 template<typename Derived>
4238 template<typename Derived>
4290 template<typename Derived>
4323 Size = getDerived().TransformExpr(Size).template getAs<Expr>();
4331 template<typename Derived>
4359 template<typename Derived>
4398 template<typename Derived>
4446 template<typename Derived>
4490 template<typename Derived>
4513 template<typename Derived>
4537 template <typename Derived>
4592 template<typename Derived>
4788 template<typename Derived>
4802 template<typename Derived> template<typename Fn>
4828 // template of a class X, the expression this is a prvalue of type
4856 // FIXME: Need to transform ConsumedParameters for variadic template
4878 template<typename Derived>
4979 template<typename Derived>
5001 template<typename Derived> QualType
5024 template<typename Derived>
5048 template<typename Derived>
5080 template<typename Derived>
5104 template<typename Derived>
5136 template<typename Derived>
5159 template<typename Derived>
5185 template<typename Derived>
5209 template<typename Derived>
5233 template<typename Derived>
5246 template<typename Derived>
5253 template<typename Derived>
5261 // template arguments of template template parameters.
5281 template<typename Derived>
5288 template<typename Derived>
5297 TemplateName Template
5300 if (Template.isNull())
5303 return getDerived().TransformTemplateSpecializationType(TLB, TL, Template);
5306 template<typename Derived>
5329 /// \brief Simple iterator that traverses the template arguments in a
5334 template<typename ArgLocContainer>
5394 template <typename Derived>
5398 TemplateName Template) {
5409 // FIXME: maybe don't rebuild if all the template arguments are the same.
5412 getDerived().RebuildTemplateSpecializationType(Template,
5417 // Specializations of template template parameters are represented as
5448 template <typename Derived>
5452 TemplateName Template,
5464 // FIXME: maybe don't rebuild if all the template arguments are the same.
5466 if (DependentTemplateName *DTN = Template.getAsDependentTemplateName()) {
5488 = getDerived().RebuildTemplateSpecializationType(Template,
5507 template<typename Derived>
5527 // If the identifier resolves to a typedef-name or the simple-template-id
5528 // resolves to an alias template specialization, the
5533 TemplateName Template = TST->getTemplateName();
5535 Template.getAsTemplateDecl())) {
5560 template<typename Derived>
5608 template<typename Derived>
5630 template<typename Derived>
5665 template<typename Derived>
5681 template<typename Derived>
5711 // Copy information relevant to the template specialization.
5749 template<typename Derived>
5773 template<typename Derived>
5782 template<typename Derived>
5913 template<typename Derived>
5938 template<typename Derived>
5944 template<typename Derived>
5950 template<typename Derived>
5989 template<typename Derived>
6030 template<typename Derived>
6043 template<typename Derived>
6062 template <typename Derived>
6079 template <typename Derived>
6102 template<typename Derived>
6159 template<typename Derived>
6197 template<typename Derived>
6247 template<typename Derived>
6270 template<typename Derived>
6337 template<typename Derived>
6350 template<typename Derived>
6366 template<typename Derived>
6372 template<typename Derived>
6378 template<typename Derived>
6391 template<typename Derived>
6413 template<typename Derived>
6478 template<typename Derived>
6512 template<typename Derived>
6519 template<typename Derived>
6532 template<typename Derived>
6545 template<typename Derived>
6560 template<typename Derived>
6600 template<typename Derived>
6636 template<typename Derived>
6654 template<typename Derived>
6671 template<typename Derived>
6701 template<typename Derived>
6720 template<typename Derived>
6754 template <typename Derived>
6783 template <typename Derived>
6810 template<typename Derived>
6881 template<typename Derived>
6950 template<typename Derived>
6976 template <typename Derived>
6995 template <typename Derived>
7013 template <typename Derived>
7022 template <typename Derived>
7036 template <typename Derived>
7044 template<typename Derived>
7053 template <typename Derived>
7111 template <typename Derived>
7122 template <typename Derived>
7133 template <typename Derived>
7144 template <typename Derived>
7155 template <typename Derived>
7166 template <typename Derived>
7177 template <typename Derived>
7188 template <typename Derived>
7199 template <typename Derived>
7209 template <typename Derived>
7220 template <typename Derived>
7231 template <typename Derived>
7242 template <typename Derived>
7253 template <typename Derived>
7264 template <typename Derived>
7275 template <typename Derived>
7286 template <typename Derived>
7297 template <typename Derived>
7308 template <typename Derived>
7319 template <typename Derived>
7330 template <typename Derived>
7341 template <typename Derived>
7352 template <typename Derived>
7363 template <typename Derived>
7374 template <typename Derived>
7385 template <typename Derived>
7396 template <typename Derived>
7407 template <typename Derived>
7421 template <typename Derived>
7431 template <typename Derived>
7440 template <typename Derived>
7450 template <typename Derived>
7460 template <typename Derived>
7470 template <typename Derived>
7480 template <typename Derived>
7488 template <typename Derived>
7496 template <typename Derived>
7507 template <typename Derived>
7520 template <typename Derived>
7523 // No need to rebuild this clause, no template-dependent parameters.
7527 template <typename Derived>
7530 // No need to rebuild this clause, no template-dependent parameters.
7534 template <typename Derived>
7537 // No need to rebuild this clause, no template-dependent parameters.
7541 template <typename Derived>
7543 // No need to rebuild this clause, no template-dependent parameters.
7547 template <typename Derived>
7549 // No need to rebuild this clause, no template-dependent parameters.
7553 template <typename Derived>
7556 // No need to rebuild this clause, no template-dependent parameters.
7560 template <typename Derived>
7563 // No need to rebuild this clause, no template-dependent parameters.
7567 template <typename Derived>
7570 // No need to rebuild this clause, no template-dependent parameters.
7574 template <typename Derived>
7577 // No need to rebuild this clause, no template-dependent parameters.
7581 template <typename Derived>
7583 // No need to rebuild this clause, no template-dependent parameters.
7587 template <typename Derived>
7590 // No need to rebuild this clause, no template-dependent parameters.
7594 template <typename Derived>
7609 template <typename Derived>
7624 template <typename Derived>
7639 template <typename Derived>
7654 template <typename Derived>
7679 template <typename Derived>
7698 template <typename Derived>
7717 template <typename Derived>
7732 template <typename Derived>
7747 template <typename Derived>
7761 template <typename Derived>
7777 template <typename Derived>
7787 template <typename Derived>
7803 template <typename Derived>
7813 template <typename Derived>
7823 template <typename Derived>
7833 template <typename Derived>
7843 template <typename Derived>
7853 template <typename Derived>
7865 template<typename Derived>
7875 template<typename Derived>
7927 template<typename Derived>
7933 template<typename Derived>
7939 template<typename Derived>
7945 template<typename Derived>
7951 template<typename Derived>
7957 template<typename Derived>
7965 template<typename Derived>
8000 template<typename Derived>
8017 template<typename Derived>
8026 template<typename Derived>
8045 template<typename Derived>
8058 // template code that we don't care.
8110 template<typename Derived>
8118 template<typename Derived>
8124 template<typename Derived>
8146 template<typename Derived>
8198 template<typename Derived>
8221 template <typename Derived>
8251 template<typename Derived>
8279 template<typename Derived>
8358 template<typename Derived>
8381 template<typename Derived>
8388 template<typename Derived>
8414 template<typename Derived>
8442 template<typename Derived>
8450 template<typename Derived>
8473 template<typename Derived>
8499 template<typename Derived>
8518 template<typename Derived>
8542 template<typename Derived>
8612 template<typename Derived>
8621 template<typename Derived>
8629 template<typename Derived>
8648 template<typename Derived>
8668 template<typename Derived>
8687 template<typename Derived>
8699 template<typename Derived>
8722 template<typename Derived>
8748 template<typename Derived>
8754 template<typename Derived>
8839 template<typename Derived>
8845 template<typename Derived>
8878 template<typename Derived>
8901 template<typename Derived>
8907 template<typename Derived>
8913 template<typename Derived>
8920 template<typename Derived>
8926 template<typename Derived>
8950 template<typename Derived>
8990 template<typename Derived>
9025 template<typename Derived>
9031 template<typename Derived>
9038 template<typename Derived>
9052 template<typename Derived>
9067 template<typename Derived>
9083 template<typename Derived>
9098 template<typename Derived>
9115 template<typename Derived>
9230 template<typename Derived>
9274 template<typename Derived>
9351 template<typename Derived>
9416 // If we have neither explicit template arguments, nor the template keyword,
9432 // If we have template arguments, rebuild them, then rebuild the
9447 template<typename Derived>
9582 template<typename Derived>
9611 template<typename Derived>
9629 template <typename Derived>
9647 template <typename Derived>
9654 template<typename Derived>
9700 template<typename Derived>
9756 template<typename Derived>
9767 template<typename Derived>
9773 template<typename Derived>
9811 template<typename Derived>
9846 // Transform the template parameters, and add them to the current
10054 template<typename Derived>
10081 template<typename Derived>
10145 // template argument list. Optimize for this common case.
10182 template<typename Derived>
10284 template<typename Derived>
10298 template<typename Derived>
10312 template<typename Derived>
10339 // If we need to expand the pack, build a template argument from it and
10402 template<typename Derived>
10410 template<typename Derived>
10418 template<typename Derived>
10425 template<typename Derived>
10432 template<typename Derived>
10554 template<typename Derived>
10561 template<typename Derived>
10567 template<typename Derived>
10573 template<typename Derived>
10587 template<typename Derived>
10605 template<typename Derived>
10730 template<typename Derived>
10747 template<typename Derived>
10757 template<typename Derived>
10779 template<typename Derived>
10853 template<typename Derived>
10859 template<typename Derived>
10865 template<typename Derived>
10885 template<typename Derived>
10917 template<typename Derived>
10941 template<typename Derived>
10959 template<typename Derived>
10978 template<typename Derived>
10999 template<typename Derived>
11073 template<typename Derived>
11079 template<typename Derived>
11102 template<typename Derived>
11109 template<typename Derived>
11116 template<typename Derived>
11125 template<typename Derived>
11134 template<typename Derived>
11152 template<typename Derived>
11159 template<typename Derived>
11195 template<typename Derived>
11206 template<typename Derived>
11216 template<typename Derived>
11228 template<typename Derived>
11240 template<typename Derived>
11248 template<typename Derived>
11260 template<typename Derived>
11268 template<typename Derived>
11279 template<typename Derived>
11284 template<typename Derived>
11309 template<typename Derived>
11315 template<typename Derived>
11320 template<typename Derived>
11326 template<typename Derived>
11333 template<typename Derived>
11335 TemplateName Template,
11338 return SemaRef.CheckTemplateIdType(Template, TemplateNameLoc, TemplateArgs);
11341 template<typename Derived>
11347 template<typename Derived>
11351 TemplateDecl *Template) {
11353 Template);
11356 template<typename Derived>
11365 Sema::TemplateTy Template;
11371 Template);
11372 return Template.get();
11375 template<typename Derived>
11386 Sema::TemplateTy Template;
11391 Template);
11392 return Template.get();
11395 template<typename Derived>
11513 template<typename Derived>
11528 ->template getAs<RecordType>())){
11564 template<typename Derived>