reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
6343 if (getLangOpts().CPlusPlus17 && ParamType->isUndeducedType()) { 6350 auto *AT = dyn_cast<AutoType>(ParamType); 6365 Context.getTrivialTypeSourceInfo(ParamType, Param->getLocation()), 6366 DeductionArg, ParamType, Depth) == DAR_Failed) { 6378 ParamType = CheckNonTypeTemplateParameterType(ParamType, Arg->getExprLoc()); 6378 ParamType = CheckNonTypeTemplateParameterType(ParamType, Arg->getExprLoc()); 6379 if (ParamType.isNull()) { 6386 assert(!ParamType.hasQualifiers() && 6390 !Context.hasSameType(ParamType.getNonLValueExprType(Context), 6399 if ((ParamType->isDependentType() || Arg->isTypeDependent()) && 6410 << ParamType.getUnqualifiedType(); 6419 if (ParamType->isDependentType() || Arg->isTypeDependent() || 6426 Arg, ParamType.getNonLValueExprType(Context), CK_Dependent, 6427 ParamType->isLValueReferenceType() ? VK_LValue : 6428 ParamType->isRValueReferenceType() ? VK_XValue : VK_RValue); 6452 Arg, ParamType, Value, CCEK_TemplateArg); 6463 QualType CanonParamType = Context.getCanonicalType(ParamType); 6468 assert(ParamType->isNullPtrType()); 6475 assert(ParamType->isIntegralOrEnumerationType()); 6479 assert(ParamType->isMemberPointerType()); 6485 << Value.getMemberPointerDecl() << ParamType 6498 assert(ParamType->isPointerType() || ParamType->isReferenceType() || 6498 assert(ParamType->isPointerType() || ParamType->isReferenceType() || 6499 ParamType->isNullPtrType()); 6520 !Value.isLValueOnePastTheEnd() && ParamType->isPointerType()) { 6527 << Value.getAsString(Context, ParamType); 6530 assert((VD || !ParamType->isReferenceType()) && 6532 assert((!VD || !ParamType->isNullPtrType()) && 6560 if (ParamType->isIntegralOrEnumerationType()) { 6581 CheckConvertedConstantExpression(Arg, ParamType, Value, 6595 QualType IntegerType = ParamType; 6601 Context.getCanonicalType(ParamType)); 6649 if (Context.hasSameType(ParamType, ArgType)) { 6651 } else if (ParamType->isBooleanType()) { 6653 Arg = ImpCastExprToType(Arg, ParamType, CK_IntegralToBoolean).get(); 6654 } else if (IsIntegralPromotion(Arg, ArgType, ParamType) || 6655 !ParamType->isEnumeralType()) { 6657 Arg = ImpCastExprToType(Arg, ParamType, CK_IntegralCast).get(); 6661 << Arg->getType() << ParamType << Arg->getSourceRange(); 6676 QualType IntegerType = Context.getCanonicalType(ParamType); 6680 if (ParamType->isBooleanType()) { 6723 ParamType->isEnumeralType() 6724 ? Context.getCanonicalType(ParamType) 6739 (ParamType->isPointerType() && 6740 ParamType->castAs<PointerType>()->getPointeeType()->isFunctionType()) || 6745 (ParamType->isReferenceType() && 6746 ParamType->castAs<ReferenceType>()->getPointeeType()->isFunctionType()) || 6752 (ParamType->isMemberPointerType() && 6753 ParamType->castAs<MemberPointerType>()->getPointeeType() 6757 if (FunctionDecl *Fn = ResolveAddressOfOverloadedFunction(Arg, ParamType, 6769 if (!ParamType->isMemberPointerType()) { 6771 ParamType, 6777 if (CheckTemplateArgumentPointerToMember(*this, Param, ParamType, Arg, 6783 if (ParamType->isPointerType()) { 6788 assert(ParamType->getPointeeType()->isIncompleteOrObjectType() && 6792 ParamType, 6798 if (const ReferenceType *ParamRefType = ParamType->getAs<ReferenceType>()) { 6823 ParamType, 6830 if (ParamType->isNullPtrType()) { 6836 switch (isNullPointerValueTemplateArgument(*this, Param, ParamType, Arg)) { 6839 << Arg->getType() << ParamType; 6848 Converted = TemplateArgument(Context.getCanonicalType(ParamType), 6856 assert(ParamType->isMemberPointerType() && "Only pointers to members remain"); 6858 if (CheckTemplateArgumentPointerToMember(*this, Param, ParamType, Arg,