This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/37350] New: Specialized template base class name not accepted
- From: "ian at airs dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 3 Sep 2008 14:06:14 -0000
- Subject: [Bug c++/37350] New: Specialized template base class name not accepted
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
C++98 [temp.local] says "Within the scope of a class template specialization or
partial specialization, when the name of the template is neither qualified nor
followed by <, it is equivalent to the name of the template followed by the
template-arguments enclosed in <>." That does not work when a template
specialization is used as a base class. In that case g++ does not accept the
unqualified base class name as a type.
This test case:
template <class T>
struct base {};
struct derived : base<int> {
typedef base b;
base* p;
};
gives these errors:
foo.cc:5: error: invalid use of template-name ?base? without an argument list
foo.cc:6: error: ISO C++ forbids declaration of ?base? with no type
foo.cc:6: error: expected ?;? before ?*? token
I believe this is an incorrect rejection of valid C++ code. At least, I can't
find anything in the C++ standard which says that this code is invalid.
--
Summary: Specialized template base class name not accepted
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Keywords: rejects-valid
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ian at airs dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37350