clang
10.0.0git
|
Provides information about an attempted template argument deduction, whose success or failure was described by a TemplateDeductionResult value. More...
#include "clang/Sema/TemplateDeduction.h"
Public Types | |
using | diag_iterator = SmallVectorImpl< PartialDiagnosticAt >::const_iterator |
Iterator over the set of suppressed diagnostics. More... | |
Public Member Functions | |
TemplateDeductionInfo (SourceLocation Loc, unsigned DeducedDepth=0) | |
TemplateDeductionInfo (const TemplateDeductionInfo &)=delete | |
TemplateDeductionInfo & | operator= (const TemplateDeductionInfo &)=delete |
SourceLocation | getLocation () const |
Returns the location at which template argument is occurring. More... | |
unsigned | getDeducedDepth () const |
The depth of template parameters for which deduction is being performed. More... | |
unsigned | getNumExplicitArgs () const |
Get the number of explicitly-specified arguments. More... | |
TemplateArgumentList * | take () |
Take ownership of the deduced template argument list. More... | |
void | takeSFINAEDiagnostic (PartialDiagnosticAt &PD) |
Take ownership of the SFINAE diagnostic. More... | |
void | clearSFINAEDiagnostic () |
Discard any SFINAE diagnostics. More... | |
const PartialDiagnosticAt & | peekSFINAEDiagnostic () const |
Peek at the SFINAE diagnostic. More... | |
void | setExplicitArgs (TemplateArgumentList *NewDeduced) |
Provide an initial template argument list that contains the explicitly-specified arguments. More... | |
void | reset (TemplateArgumentList *NewDeduced) |
Provide a new template argument list that contains the results of template argument deduction. More... | |
bool | hasSFINAEDiagnostic () const |
Is a SFINAE diagnostic available? More... | |
void | addSFINAEDiagnostic (SourceLocation Loc, PartialDiagnostic PD) |
Set the diagnostic which caused the SFINAE failure. More... | |
void | addSuppressedDiagnostic (SourceLocation Loc, PartialDiagnostic PD) |
Add a new diagnostic to the set of diagnostics. More... | |
diag_iterator | diag_begin () const |
Returns an iterator at the beginning of the sequence of suppressed diagnostics. More... | |
diag_iterator | diag_end () const |
Returns an iterator at the end of the sequence of suppressed diagnostics. More... | |
Public Attributes | |
TemplateParameter | Param |
The template parameter to which a template argument deduction failure refers. More... | |
TemplateArgument | FirstArg |
The first template argument to which the template argument deduction failure refers. More... | |
TemplateArgument | SecondArg |
The second template argument to which the template argument deduction failure refers. More... | |
unsigned | CallArgIndex = 0 |
The index of the function argument that caused a deduction failure. More... | |
SmallVector< DeducedPack *, 8 > | PendingDeducedPacks |
Information on packs that we're currently expanding. More... | |
ConstraintSatisfaction | AssociatedConstraintsSatisfaction |
The constraint satisfaction details resulting from the associated constraints satisfaction tests. More... | |
Provides information about an attempted template argument deduction, whose success or failure was described by a TemplateDeductionResult value.
Definition at line 42 of file TemplateDeduction.h.
using clang::sema::TemplateDeductionInfo::diag_iterator = SmallVectorImpl<PartialDiagnosticAt>::const_iterator |
Iterator over the set of suppressed diagnostics.
Definition at line 151 of file TemplateDeduction.h.
|
inline |
Definition at line 65 of file TemplateDeduction.h.
References operator=().
|
delete |
|
inline |
Set the diagnostic which caused the SFINAE failure.
Definition at line 133 of file TemplateDeduction.h.
|
inline |
Add a new diagnostic to the set of diagnostics.
Definition at line 143 of file TemplateDeduction.h.
|
inline |
Discard any SFINAE diagnostics.
Definition at line 103 of file TemplateDeduction.h.
Referenced by clang::Sema::isMoreSpecializedThanPrimary(), and takeSFINAEDiagnostic().
|
inline |
Returns an iterator at the beginning of the sequence of suppressed diagnostics.
Definition at line 155 of file TemplateDeduction.h.
|
inline |
Returns an iterator at the end of the sequence of suppressed diagnostics.
Definition at line 159 of file TemplateDeduction.h.
|
inline |
The depth of template parameters for which deduction is being performed.
Definition at line 78 of file TemplateDeduction.h.
Referenced by DeduceNonTypeTemplateArgument(), DeduceTemplateArguments(), DeduceTemplateArgumentsByTypeMatch(), and getDeducedParameterFromExpr().
|
inline |
Returns the location at which template argument is occurring.
Definition at line 72 of file TemplateDeduction.h.
Referenced by CheckDeducedArgumentConstraints(), ConvertDeducedTemplateArgument(), diagnoseAutoDeductionFailure(), and clang::Sema::FinishTemplateArgumentDeduction().
|
inline |
Get the number of explicitly-specified arguments.
Definition at line 83 of file TemplateDeduction.h.
|
inline |
Is a SFINAE diagnostic available?
Definition at line 128 of file TemplateDeduction.h.
|
delete |
Referenced by TemplateDeductionInfo(), and clang::TemplateSpecCandidateSet::TemplateSpecCandidateSet().
|
inline |
Peek at the SFINAE diagnostic.
Definition at line 109 of file TemplateDeduction.h.
|
inline |
Provide a new template argument list that contains the results of template argument deduction.
Definition at line 123 of file TemplateDeduction.h.
Referenced by CheckDeducedArgumentConstraints().
|
inline |
Provide an initial template argument list that contains the explicitly-specified arguments.
Definition at line 116 of file TemplateDeduction.h.
References clang::TemplateArgumentList::size().
|
inline |
Take ownership of the deduced template argument list.
Definition at line 88 of file TemplateDeduction.h.
|
inline |
Take ownership of the SFINAE diagnostic.
Definition at line 95 of file TemplateDeduction.h.
References clearSFINAEDiagnostic().
ConstraintSatisfaction clang::sema::TemplateDeductionInfo::AssociatedConstraintsSatisfaction |
The constraint satisfaction details resulting from the associated constraints satisfaction tests.
Definition at line 227 of file TemplateDeduction.h.
Referenced by CheckDeducedArgumentConstraints().
unsigned clang::sema::TemplateDeductionInfo::CallArgIndex = 0 |
The index of the function argument that caused a deduction failure.
TDK_DeducedMismatch: this is the index of the argument that had a different argument type from its substituted parameter type.
Definition at line 218 of file TemplateDeduction.h.
TemplateArgument clang::sema::TemplateDeductionInfo::FirstArg |
The first template argument to which the template argument deduction failure refers.
Depending on the result of the template argument deduction, this template argument may have different meanings:
TDK_IncompletePack: this is the number of arguments we deduced for the pack.
TDK_Inconsistent: this argument is the first value deduced for the corresponding template parameter.
TDK_SubstitutionFailure: this argument is the template argument we were instantiating when we encountered an error.
TDK_DeducedMismatch: this is the parameter type, after substituting deduced arguments.
TDK_NonDeducedMismatch: this is the component of the 'parameter' of the deduction, directly provided in the source code.
Definition at line 197 of file TemplateDeduction.h.
Referenced by DeduceNonTypeTemplateArgument(), DeduceTemplateArguments(), DeduceTemplateArgumentsByTypeMatch(), and diagnoseAutoDeductionFailure().
TemplateParameter clang::sema::TemplateDeductionInfo::Param |
The template parameter to which a template argument deduction failure refers.
Depending on the result of template argument deduction, this template parameter may have different meanings:
TDK_Incomplete: this is the first template parameter whose corresponding template argument was not deduced.
TDK_IncompletePack: this is the expanded parameter pack for which we deduced too few arguments.
TDK_Inconsistent: this is the template parameter for which two different template argument values were deduced.
Definition at line 175 of file TemplateDeduction.h.
Referenced by DeduceNonTypeTemplateArgument(), and DeduceTemplateArguments().
SmallVector<DeducedPack *, 8> clang::sema::TemplateDeductionInfo::PendingDeducedPacks |
Information on packs that we're currently expanding.
FIXME: This should be kept internal to SemaTemplateDeduction.
Definition at line 223 of file TemplateDeduction.h.
TemplateArgument clang::sema::TemplateDeductionInfo::SecondArg |
The second template argument to which the template argument deduction failure refers.
TDK_Inconsistent: this argument is the second value deduced for the corresponding template parameter.
TDK_DeducedMismatch: this is the (adjusted) call argument type.
TDK_NonDeducedMismatch: this is the mismatching component of the 'argument' of the deduction, from which we are deducing arguments.
FIXME: Finish documenting this.
Definition at line 211 of file TemplateDeduction.h.
Referenced by DeduceNonTypeTemplateArgument(), DeduceTemplateArguments(), DeduceTemplateArgumentsByTypeMatch(), and diagnoseAutoDeductionFailure().