fix template deduction for member functions

This commit is contained in:
drmortalwombat 2024-05-22 20:53:23 +02:00
parent 3460c06508
commit c0152b1ce4

View File

@ -5700,6 +5700,9 @@ Expression* Parser::ParseSimpleExpression(bool lhs)
else else
{ {
rexp = ParseParenthesisExpression(); rexp = ParseParenthesisExpression();
if (rexp->mDecType->IsReference())
dec->mInteger = rexp->mDecType->mBase->mSize;
else
dec->mInteger = rexp->mDecType->mSize; dec->mInteger = rexp->mDecType->mSize;
} }
exp = new Expression(mScanner->mLocation, EX_CONSTANT); exp = new Expression(mScanner->mLocation, EX_CONSTANT);
@ -5907,7 +5910,7 @@ Expression* Parser::ParseQualify(Expression* exp)
} }
else if (mdec->mType == DT_CONST_FUNCTION) else if (mdec->mType == DT_CONST_FUNCTION)
{ {
if (mdec->mTemplate) if (mdec->mTemplate && mScanner->mToken == TK_LESS_THAN)
mdec = ParseTemplateExpansion(mdec->mTemplate, nullptr); mdec = ParseTemplateExpansion(mdec->mTemplate, nullptr);
if (mdec->mBase->mFlags & DTF_FUNC_THIS) if (mdec->mBase->mFlags & DTF_FUNC_THIS)