This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/34406] New: [reject valid?] incomplete type 'Y' used in nested name specifier.
- From: "pluto at agmk dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 9 Dec 2007 13:11:39 -0000
- Subject: [Bug c++/34406] New: [reject valid?] incomplete type 'Y' used in nested name specifier.
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
template < typename T, typename C, C T::*F >
struct X
{
};
struct Y
{
typedef X< Y, int, &Y::field_ > Z;
int field_;
};
gcc-4.1 reports:
t.cpp:8: error: incomplete type 'Y' used in nested name specifier
t.cpp:8: error: template argument 3 is invalid
comeau online:
"ComeauTest.c", line 8: error: class "Y" has no member "field_"
typedef X< Y, int, &Y::field_ > Z;
msvc8:
t.cpp(8) : error C2065: 'field_' : undeclared identifier
after moving the 'int field_' before typedef:
gcc and comeau accepts code, while msvc8 still rejects with:
t.cpp(9) : error C2327: 'Y::field_' : is not a type name, static, or enumerator
t.cpp(9) : error C2065: 'field_' : undeclared identifier
could someone throw some light please?
--
Summary: [reject valid?] incomplete type 'Y' used in nested name
specifier.
Product: gcc
Version: 4.1.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pluto at agmk dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34406