From c0152b1ce4236df75116be0630a4ea59ce08a13d Mon Sep 17 00:00:00 2001 From: drmortalwombat <90205530+drmortalwombat@users.noreply.github.com> Date: Wed, 22 May 2024 20:53:23 +0200 Subject: [PATCH] fix template deduction for member functions --- oscar64/Parser.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/oscar64/Parser.cpp b/oscar64/Parser.cpp index 9c40604..56cba90 100644 --- a/oscar64/Parser.cpp +++ b/oscar64/Parser.cpp @@ -5700,7 +5700,10 @@ Expression* Parser::ParseSimpleExpression(bool lhs) else { rexp = ParseParenthesisExpression(); - dec->mInteger = rexp->mDecType->mSize; + if (rexp->mDecType->IsReference()) + dec->mInteger = rexp->mDecType->mBase->mSize; + else + dec->mInteger = rexp->mDecType->mSize; } exp = new Expression(mScanner->mLocation, EX_CONSTANT); exp->mDecValue = dec; @@ -5907,7 +5910,7 @@ Expression* Parser::ParseQualify(Expression* exp) } else if (mdec->mType == DT_CONST_FUNCTION) { - if (mdec->mTemplate) + if (mdec->mTemplate && mScanner->mToken == TK_LESS_THAN) mdec = ParseTemplateExpansion(mdec->mTemplate, nullptr); if (mdec->mBase->mFlags & DTF_FUNC_THIS)