This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/15531] dynamic_cast fails (at runtime) when dependant on friendship of invoker


------- Additional Comments From gdr at integrable-solutions dot net  2004-05-18 23:38 -------
Subject: Re:  New: dynamic_cast fails (at runtime) when dependant on friendship of invoker

"gccbugs at contacts dot eelis dot net" <gcc-bugzilla@gcc.gnu.org> writes:

| Consider the following snippet:
| 
|   struct Base
|   {
|     virtual ~Base () {}
|   };
| 
|   class Derived : Base
|   {
|     friend int main ();
|   };
| 
|   #include <cassert>
| 
|   int main ()
|   {
|     Base * p = new Derived;
| 
|     assert(dynamic_cast<Derived *>(p)); // fails

As required by the C++ standard.  There is no way you can successfully
dynamic_cast from base class to derived class that does not publically
inherit. 

|   }
| 
| When Derived is changed to publically inherit Base, the dynamic_cast succeeds.

Yes, that is what is required by the ISO C++ standard.

The PR is invalid.

-- Gaby


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15531


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]