Skip to content

Commit a07c174

Browse files
Add in typename qualifiers into member pointer overloads declarators.
1 parent 9f5b9cc commit a07c174

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

Diff for: classdesc.cc

+5-3
Original file line numberDiff line numberDiff line change
@@ -193,14 +193,16 @@ struct MemberSig
193193
MemberSig(string d, string r, string a, string p, string n, Type t):
194194
declName(d), returnType(r), argList(a), prefix(p), name(n), type(t) {}
195195
string declare() {
196+
// If qualified type, the typename qualifier required
197+
auto rType=returnType.find("::")!=string::npos? "typename "+returnType: returnType;
196198
switch (type)
197199
{
198200
case none:
199-
return returnType+"("+prefix+"*"+declName+")("+argList+")=&"+prefix+name+";";
201+
return rType+"("+prefix+"*"+declName+")("+argList+")=&"+prefix+name+";";
200202
case is_const:
201-
return returnType+"("+prefix+"*"+declName+")("+argList+") const=&"+prefix+name+";";
203+
return rType+"("+prefix+"*"+declName+")("+argList+") const=&"+prefix+name+";";
202204
case is_static:
203-
return returnType+"(*"+declName+")("+argList+")=&"+prefix+name+";";
205+
return rType+"(*"+declName+")("+argList+")=&"+prefix+name+";";
204206
case is_constructor:
205207
return "void (*"+declName+")("+argList+")=0;";
206208
default: assert(false); return ""; // should never be executed, - statement to silence warning

0 commit comments

Comments
 (0)