KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Check out the following code (written just for fun) namespace N { template<typename T> struct K { }; } template<typename T> struct X { typename T::template K<T> *p; //should give error //N::K<int> has no template member named `K` }; int main() { X<N::K<int> > l; } The code gets compiled on g++(4.5.1) and Clang whereas Comeau and Intel C++ give (similar) errors. The errors that I get on Comeau are : "ComeauTest.c", line 13: error: class "N::K<int>" has no member "K" typename T::template K<T> *p; ^ detected during instantiation of class "X<T> [with T=N::K<int>]" at line 18 "ComeauTest.c", line 13: error: expected an identifier typename T::template K<T> *p; ^ detected during instantiation of class "X<T> [with T=N::K<int>]" at line 18 So my question is "Is the code sample ill-formed ?" According to me "Yes". Does that mean this is yet another bug in g++/Clang?
Tags (comma-separated)
Save Edits
Cancel