Confusing about the accessibility of the base class
zhang qingshan
steven.zhang54373@gmail.com
Wed May 11 10:05:00 GMT 2011
Hi, guys,
I test the following testcase with GCC 4.6
struct A {
private:
struct Patch {};
};
#ifdef TMPL
template <int x>
#endif
struct X : private A
{
void f () {
typedef A::Patch Patch;
}
};
int main()
{
#ifdef TMPL
X<1> d;
#else
X d;
#endif
d.f();
}
If TMPL is not defined, get the error message:
/data/a.cpp: In member function 'void X::f()':
/data/a.cpp:3:11: error: 'struct A::Patch' is private
/data/a.cpp:12:24: error: within this context
which makes sense, as struct Patch is the private member of struct A.
But if TMPL is defined, GCC compiles it clean. This confuses me.
More information about the Gcc-help
mailing list