** I am trying to compile a program that looks like the following but the
compiler cannot recognize which class the nested class belongs to:
#include <iostream>
using namespace std;
template <typename T>
struct A
{
class B;
friend class B;
};
template <>
struct A<void>
{
class B;
friend class B;
};
template <typename T>
struct A<T>::B
{
B()
{
cout << __PRETTY_FUNCTION__ << endl;
}
};
int main()
{
A<void>::B b;
}
** Reports:
nesttempspecbug.cpp: In function `int main()':
nesttempspecbug.cpp:35: error: aggregate `A<void>::B b' has incomplete type and
cannot be defined
--
Summary: Nested class of specialized template class bug
Product: gcc
Version: 3.4.5
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: philippe at fornux dot com
GCC build triplet: gcc version 3.4.5 (mingw special)
GCC host triplet: Windows XP
GCC target triplet: MinGW
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35727