enum CodeSynthesisContext::SynthesisKind

Description

The kind of template instantiation we are performing

Declared at: clang/include/clang/Sema/Sema.h:8938

Enumerators

NameValueComment
TemplateInstantiation0We are instantiating a template declaration. The entity is the declaration we're instantiating (e.g., a CXXRecordDecl).
DefaultTemplateArgumentInstantiation1We are instantiating a default argument for a template parameter. The Entity is the template parameter whose argument is being instantiated, the Template is the template, and the TemplateArgs/NumTemplateArguments provide the template arguments as specified.
DefaultFunctionArgumentInstantiation2We are instantiating a default argument for a function. The Entity is the ParmVarDecl, and TemplateArgs/NumTemplateArgs provides the template arguments as specified.
ExplicitTemplateArgumentSubstitution3We are substituting explicit template arguments provided for a function template. The entity is a FunctionTemplateDecl.
DeducedTemplateArgumentSubstitution4We are substituting template argument determined as part of template argument deduction for either a class template partial specialization or a function template. The Entity is either a {Class|Var}TemplatePartialSpecializationDecl or a TemplateDecl.
PriorTemplateArgumentSubstitution5We are substituting prior template arguments into a new template parameter. The template parameter itself is either a NonTypeTemplateParmDecl or a TemplateTemplateParmDecl.
DefaultTemplateArgumentChecking6We are checking the validity of a default template argument that has been used when naming a template-id.
ExceptionSpecEvaluation7We are computing the exception specification for a defaulted special member function.
ExceptionSpecInstantiation8We are instantiating the exception specification for a function template which was deferred until it was needed.
RequirementInstantiation9We are instantiating a requirement of a requires expression.
NestedRequirementConstraintsCheck10We are checking the satisfaction of a nested requirement of a requires expression.
DeclaringSpecialMember11We are declaring an implicit special member function.
DeclaringImplicitEqualityComparison12We are declaring an implicit 'operator==' for a defaulted 'operator < =>'.
DefiningSynthesizedFunction13We are defining a synthesized function (such as a defaulted special member).
ConstraintsCheck14We are defining a synthesized function (such as a defaulted special member).
ConstraintSubstitution15We are defining a synthesized function (such as a defaulted special member).
ConstraintNormalization16We are defining a synthesized function (such as a defaulted special member).
ParameterMappingSubstitution17We are defining a synthesized function (such as a defaulted special member).
RewritingOperatorAsSpaceship18We are rewriting a comparison operator in terms of an operator < =>.
InitializingStructuredBinding19We are initializing a structured binding.
MarkingClassDllexported20We are marking a class as __dllexport.
BuildingBuiltinDumpStructCall21We are building an implied call from __builtin_dump_struct. The arguments are in CallArgs.
Memoization22Added for Template instantiation observation. Memoization means we are _not_ instantiating a template because it is already instantiated (but we entered a context where we would have had to if it was not already instantiated).