[cfe-dev] Access to static protected member from friends of derived classes.
Olivier Goffart
ogoffart at kde.org
Thu Feb 14 07:11:45 PST 2013
Hi,
A few years ago, I was trying to fix the bug 6840 [1] that relates to access to
static protected member from friends of derived classes.
I made a patch that fixes it at the time, but it was rejected because this was
considered as a drafting error in the standard [2].
Recently, I attended a talk by a Debian dev who tried to compile all debian
packages with clang. And that bug was one frequent cause of compilation error.
[3]
I was wondering if it was not time to revisit the decision, and consider that
this issue should be fixed after all.
The problem is the following:
class N { protected: static int m; };
class P : public N { friend class R; };
class R {
int foo() {
return N::m; // should work because the access is given via P.
// but clang gives an error:
// error: 'm' is a protected member of 'N'
}
};
C++11 ยง11.4 explicitly states this is permitted, with an example. And gcc
supports that fine.
Opinions?
--
Olivier
[1] http://llvm.org/bugs/show_bug.cgi?id=6840
[2] http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-June/009310.html
[3] http://sylvestre.ledru.info/blog/media/5/rebuild-debian-presentation-clang-July-10.pdf (slide 35)
More information about the cfe-dev
mailing list