reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
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;