Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 341747 - [c++] Ambiguity between template-id and binary expression
Summary: [c++] Ambiguity between template-id and binary expression
Status: RESOLVED FIXED
Alias: None
Product: CDT
Classification: Tools
Component: cdt-parser (show other bugs)
Version: 8.0   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: 8.0   Edit
Assignee: Markus Schorn CLA
QA Contact: Markus Schorn CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-04-04 04:53 EDT by Markus Schorn CLA
Modified: 2011-04-11 09:23 EDT (History)
1 user (show)

See Also:


Attachments
testcases + fix (88.34 KB, patch)
2011-04-11 08:33 EDT, Markus Schorn CLA
mschorn.eclipse: iplog-
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Markus Schorn CLA 2011-04-04 04:53:00 EDT
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
}
Comment 1 Markus Schorn CLA 2011-04-11 08:33:50 EDT
Created attachment 192924 [details]
testcases + fix
Comment 2 Markus Schorn CLA 2011-04-11 08:40:06 EDT
Fixed in 8.0 > 20110411.
Comment 3 CDT Genie CLA 2011-04-11 09:23:08 EDT
*** 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