Приведенный выше код на самом деле прекрасно компилируется для меня в g ++, если я переименую второй (внутренний i) во внутренний i2.
Это именно тот код, который я скомпилировал в g ++:
class temp
{
public:
class inner
{
public:
inner(int a = 0) : memberInt(a) {}
const int memberInt;
};
temp(int i = 0) : member(i)
{
}
inner *i;
inner i2;
int member;
};
int main()
{
return 0;
}