Community
Participate
Working Groups
There is an ambiguity between template-ids and binary expressions. The parser handles it via a heuristics. The following example is extracted from the gcc-header files: template<bool> struct S { static int m(); }; int f(); int s; void test() { S<1 && 2>::m(); // m is member of S s<1 && 2>::f(); // f is global }
Created attachment 192924 [details] testcases + fix
Fixed in 8.0 > 20110411.
*** cdt cvs genie on behalf of mschorn *** Bug 341747: Ambiguity between template-id and binary expression. [*] AST2TemplateTests.java 1.212 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.211&r2=1.212 [*] AST2Tests.java 1.268 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java?root=Tools_Project&r1=1.267&r2=1.268 [*] AddIncludeTest.java 1.9 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/AddIncludeTest.java?root=Tools_Project&r1=1.8&r2=1.9 [*] CPPVisitor.java 1.151 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.150&r2=1.151 [*] LookupData.java 1.55 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.54&r2=1.55 [+] NameOrTemplateIDVariants.java http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/NameOrTemplateIDVariants.java?root=Tools_Project&revision=1.1&view=markup [*] CPPASTAmbiguityResolver.java 1.13 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTAmbiguityResolver.java?root=Tools_Project&r1=1.12&r2=1.13 [+] TemplateIdStrategy.java http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/TemplateIdStrategy.java?root=Tools_Project&revision=1.1&view=markup [+] CPPASTTemplateIDAmbiguity.java http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateIDAmbiguity.java?root=Tools_Project&revision=1.1&view=markup [*] GNUCPPSourceParser.java 1.248 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java?root=Tools_Project&r1=1.247&r2=1.248 [*] GNUCSourceParser.java 1.157 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/c/GNUCSourceParser.java?root=Tools_Project&r1=1.156&r2=1.157 [*] AbstractGNUSourceCodeParser.java 1.160 http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java?root=Tools_Project&r1=1.159&r2=1.160