Community
Participate
Working Groups
When mixing method-templates with global functions for a user-defined operator the overload resolution fails. Here is an example: struct S { int s; }; struct X { template<typename T> S* operator+(T t) const {return 0;} }; int* operator+(const X&, int *) {return 0;} void test() { X x; (x + 1)->s; }
Created attachment 177973 [details] testcase + fix The patch also cleans up the computation of the implied object type for method calls.
*** cdt cvs genie on behalf of mschorn *** Bug 324214: Overload resolution with method template and global function. [*] OpenDeclarationsJob.java 1.19 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/OpenDeclarationsJob.java?root=Tools_Project&r1=1.18&r2=1.19 [*] CPPASTIdExpression.java 1.27 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTIdExpression.java?root=Tools_Project&r1=1.26&r2=1.27 [*] CPPASTLiteralExpression.java 1.25 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTLiteralExpression.java?root=Tools_Project&r1=1.24&r2=1.25 [*] CPPASTFieldReference.java 1.34 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFieldReference.java?root=Tools_Project&r1=1.33&r2=1.34 [*] Conversions.java 1.59 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java?root=Tools_Project&r1=1.58&r2=1.59 [*] CPPVisitor.java 1.130 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java?root=Tools_Project&r1=1.129&r2=1.130 [*] CPPSemantics.java 1.176 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java?root=Tools_Project&r1=1.175&r2=1.176 [*] CPPTemplates.java 1.112 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates.java?root=Tools_Project&r1=1.111&r2=1.112 [*] LookupData.java 1.50 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/LookupData.java?root=Tools_Project&r1=1.49&r2=1.50 [*] AST2TemplateTests.java 1.190 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java?root=Tools_Project&r1=1.189&r2=1.190
Fixed in 8.0 > 20100902.