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). |