
John Maddock ha escrito:
Warning: this diff has not actually been checked with ICC 8.0, but I'm confident it'll work as the problem looks exactly the same as with ICC 7.0:
I've just tested with ICC 8.0 and this patch surely works.
Well it solves the problem, but the EDG based compilers are amongst the most conforming compilers we have access to, are we sure that this is a compiler bug, rather than a code bug? If yes, do you have a test case: as I can pass it on to Intel.
Hi John, I think I have reduced the problem to an actual bug in EDG: class A { protected: int x; }; class AA:public A { public: using A::x; }; class TT; class T { public: class foo:public A // <<-- foo is the culprit! { friend class TT; }; protected: AA aa; }; class TT:public T { public: void foo(){aa.x=0;} }; int main() { } This fails with "ComeauTest.c", line 29: error: protected member "A::x" is not accessible through a "AA" pointer or object void foo(){aa.x=0;} ^ The error does not show if one of the two conditions hold (or both): 1. foo does not derive from A nor AA. 2. foo does not include the friend decl. Seems like a genuine bug to me. Comments welcome. Joaquín M López Muñoz Telefónica, Investigación y Desarrollo