enum CodeSynthesisContext::SynthesisKind
Description
The kind of template instantiation we are performing
Declared at: clang/include/clang/Sema/Sema.h:8938
Enumerators
| Name | Value | Comment |
|---|---|---|
| TemplateInstantiation | 0 | We are instantiating a template declaration. The entity is the declaration we're instantiating (e.g., a CXXRecordDecl). |
| DefaultTemplateArgumentInstantiation | 1 | We 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. |
| DefaultFunctionArgumentInstantiation | 2 | We are instantiating a default argument for a function. The Entity is the ParmVarDecl, and TemplateArgs/NumTemplateArgs provides the template arguments as specified. |
| ExplicitTemplateArgumentSubstitution | 3 | We are substituting explicit template arguments provided for a function template. The entity is a FunctionTemplateDecl. |
| DeducedTemplateArgumentSubstitution | 4 | We 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. |
| PriorTemplateArgumentSubstitution | 5 | We are substituting prior template arguments into a new template parameter. The template parameter itself is either a NonTypeTemplateParmDecl or a TemplateTemplateParmDecl. |
| DefaultTemplateArgumentChecking | 6 | We are checking the validity of a default template argument that has been used when naming a template-id. |
| ExceptionSpecEvaluation | 7 | We are computing the exception specification for a defaulted special member function. |
| ExceptionSpecInstantiation | 8 | We are instantiating the exception specification for a function template which was deferred until it was needed. |
| RequirementInstantiation | 9 | We are instantiating a requirement of a requires expression. |
| NestedRequirementConstraintsCheck | 10 | We are checking the satisfaction of a nested requirement of a requires expression. |
| DeclaringSpecialMember | 11 | We are declaring an implicit special member function. |
| DeclaringImplicitEqualityComparison | 12 | We are declaring an implicit 'operator==' for a defaulted 'operator < =>'. |
| DefiningSynthesizedFunction | 13 | We are defining a synthesized function (such as a defaulted special member). |
| ConstraintsCheck | 14 | We are defining a synthesized function (such as a defaulted special member). |
| ConstraintSubstitution | 15 | We are defining a synthesized function (such as a defaulted special member). |
| ConstraintNormalization | 16 | We are defining a synthesized function (such as a defaulted special member). |
| ParameterMappingSubstitution | 17 | We are defining a synthesized function (such as a defaulted special member). |
| RewritingOperatorAsSpaceship | 18 | We are rewriting a comparison operator in terms of an operator < =>. |
| InitializingStructuredBinding | 19 | We are initializing a structured binding. |
| MarkingClassDllexported | 20 | We are marking a class as __dllexport. |
| BuildingBuiltinDumpStructCall | 21 | We are building an implied call from __builtin_dump_struct. The arguments are in CallArgs. |
| Memoization | 22 | Added 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). |