reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/Sema/SemaTemplate.cpp
 6340   SourceLocation StartLoc = Arg->getBeginLoc();
 6349     if (CTAK == CTAK_Deduced && Arg->isTypeDependent()) {
 6352         Converted = TemplateArgument(Arg);
 6353         return Arg;
 6361     Expr *DeductionArg = Arg;
 6367       Diag(Arg->getExprLoc(),
 6369         << Param->getDeclName() << Param->getType() << Arg->getType()
 6370         << Arg->getSourceRange();
 6378     ParamType = CheckNonTypeTemplateParameterType(ParamType, Arg->getExprLoc());
 6391                            Arg->getType())) {
 6399     if ((ParamType->isDependentType() || Arg->isTypeDependent()) &&
 6400         !Arg->getType()->getContainedAutoType()) {
 6401       Converted = TemplateArgument(Arg);
 6402       return Arg;
 6409       << Arg->getType()
 6419   if (ParamType->isDependentType() || Arg->isTypeDependent() ||
 6420       Arg->containsUnexpandedParameterPack()) {
 6422     auto *PE = dyn_cast<PackExpansionExpr>(Arg);
 6424       Arg = PE->getPattern();
 6426         Arg, ParamType.getNonLValueExprType(Context), CK_Dependent,
 6452         Arg, ParamType, Value, CCEK_TemplateArg);
 6483         Diag(Arg->getBeginLoc(),
 6486             << Arg->getSourceRange();
 6512         Diag(Arg->getBeginLoc(), diag::err_template_arg_not_decl_ref)
 6513             << Arg->getSourceRange();
 6581         CheckConvertedConstantExpression(Arg, ParamType, Value,
 6605     ExprResult ArgResult = DefaultLvalueConversion(Arg);
 6608     Arg = ArgResult.get();
 6610     QualType ArgType = Arg->getType();
 6621       Diag(Arg->getBeginLoc(), diag::err_template_arg_not_integral_or_enumeral)
 6622           << ArgType << Arg->getSourceRange();
 6625     } else if (!Arg->isValueDependent()) {
 6638       Arg = VerifyIntegerConstantExpression(Arg, &Value, Diagnoser,
 6638       Arg = VerifyIntegerConstantExpression(Arg, &Value, Diagnoser,
 6640       if (!Arg)
 6653       Arg = ImpCastExprToType(Arg, ParamType, CK_IntegralToBoolean).get();
 6653       Arg = ImpCastExprToType(Arg, ParamType, CK_IntegralToBoolean).get();
 6654     } else if (IsIntegralPromotion(Arg, ArgType, ParamType) ||
 6657       Arg = ImpCastExprToType(Arg, ParamType, CK_IntegralCast).get();
 6657       Arg = ImpCastExprToType(Arg, ParamType, CK_IntegralCast).get();
 6660       Diag(Arg->getBeginLoc(), diag::err_template_arg_not_convertible)
 6661           << Arg->getType() << ParamType << Arg->getSourceRange();
 6661           << Arg->getType() << ParamType << Arg->getSourceRange();
 6669     if (Arg->isValueDependent()) {
 6672       Converted = TemplateArgument(Arg);
 6673       return Arg;
 6700         Diag(Arg->getBeginLoc(), diag::warn_template_arg_negative)
 6702             << Arg->getSourceRange();
 6715         Diag(Arg->getBeginLoc(), diag::warn_template_arg_too_large)
 6717             << Arg->getSourceRange();
 6726     return Arg;
 6729   QualType ArgType = Arg->getType();
 6756     if (Arg->getType() == Context.OverloadTy) {
 6757       if (FunctionDecl *Fn = ResolveAddressOfOverloadedFunction(Arg, ParamType,
 6760         if (DiagnoseUseOfDecl(Fn, Arg->getBeginLoc()))
 6763         Arg = FixOverloadedFunctionReference(Arg, FoundResult, Fn);
 6763         Arg = FixOverloadedFunctionReference(Arg, FoundResult, Fn);
 6764         ArgType = Arg->getType();
 6772                                                          Arg, Converted))
 6774       return Arg;
 6777     if (CheckTemplateArgumentPointerToMember(*this, Param, ParamType, Arg,
 6780     return Arg;
 6793                                                        Arg, Converted))
 6795     return Arg;
 6808     if (Arg->getType() == Context.OverloadTy) {
 6809       if (FunctionDecl *Fn = ResolveAddressOfOverloadedFunction(Arg,
 6813         if (DiagnoseUseOfDecl(Fn, Arg->getBeginLoc()))
 6816         Arg = FixOverloadedFunctionReference(Arg, FoundResult, Fn);
 6816         Arg = FixOverloadedFunctionReference(Arg, FoundResult, Fn);
 6817         ArgType = Arg->getType();
 6824                                                        Arg, Converted))
 6826     return Arg;
 6831     if (Arg->isTypeDependent() || Arg->isValueDependent()) {
 6831     if (Arg->isTypeDependent() || Arg->isValueDependent()) {
 6832       Converted = TemplateArgument(Arg);
 6833       return Arg;
 6836     switch (isNullPointerValueTemplateArgument(*this, Param, ParamType, Arg)) {
 6838       Diag(Arg->getExprLoc(), diag::err_template_arg_not_convertible)
 6839         << Arg->getType() << ParamType;
 6847       Diag(Arg->getExprLoc(), diag::warn_cxx98_compat_template_arg_null);
 6850       return Arg;
 6858   if (CheckTemplateArgumentPointerToMember(*this, Param, ParamType, Arg,
 6861   return Arg;