[Bug c++/23849] New: inaccessible base in static_cast from template base type to non-template derived type
fang at csl dot cornell dot edu
gcc-bugzilla@gcc.gnu.org
Tue Sep 13 07:44:00 GMT 2005
failing versions: 4.0.1 (FSF), 4.0.0 (Apple, build 5026), 3.4.0 (FSF) -- platform-independent
working vesions: 3.3 (Apple, build 4061), 3.3 (FSF) -- platform-independent
to reproduce: g++ visibug.cc
'failing' versions reject with the same diagnostic:
visibug.cc: In member function 'void A<T>::foo() const [with T = int]':
visibug.cc:20: instantiated from here
visibug.cc:15: error: 'A<int>' is an inaccessible base of 'B'
somewhat reduced test case "visibug.cc":
template <class T>
class A {
protected:
void foo(void) const;
};
class B : private A<int> {
public:
void bar(void) const;
};
template <class T>
void
A<T>::foo(void) const {
static_cast<const B&>(*this);
}
void
B::bar(void) const {
A<int>::foo();
}
// end of "visibug.cc"
Remarks:
Wasn't able to find any remarks about this particular case in bugzilla (terms: cast, visib, accessibl), nor
did I find a comment about C++ language changes in the 3.4 release docs. I suspect either this is a
reject-valid bug, OR there's something in the standard that says this is invalid, and that 3.4+ are just
conforming to it. (Or I'm extremely tired and my eyes just glossed over it.) If invalid, kindly reference
the relevant section?
--
Summary: inaccessible base in static_cast from template base type
to non-template derived type
Product: gcc
Version: 4.0.1
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: fang at csl dot cornell dot edu
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23849
More information about the Gcc-bugs
mailing list