This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
c++/2053: Static cast from parent to children is working but shouldn't
- To: gcc-gnats at gcc dot gnu dot org
- Subject: c++/2053: Static cast from parent to children is working but shouldn't
- From: philippeb at corel dot com
- Date: 21 Feb 2001 21:54:34 -0000
- Cc: olegn at corel dot com
- Reply-To: philippeb at corel dot com
>Number: 2053
>Category: c++
>Synopsis: Static cast from parent to children is working but shouldn't
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Feb 21 13:56:02 PST 2001
>Closed-Date:
>Last-Modified:
>Originator: gcc
>Release: 2.95.3 20010101
>Organization:
>Environment:
Linux 2.4.0 i686
>Description:
The compiler is not preventing a cast from a parent pointer
to a children pointer unless inheritance is virtual.
>How-To-Repeat:
struct A {}; struct B : A {};
A * p1 = new A;
B * p2 = static_cast<B *>(p1);
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-c++src; name="casts.cpp"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="casts.cpp"
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+CiNpbmNsdWRlIDxtYWxsb2Mu
aD4KCnN0cnVjdCBBCnsKICB2aXJ0dWFsIHZvaWQgbmFtZSgpIHsgY291dCA8PCAiQSI7IH0KfTsK
CnN0cnVjdCBCIDogQQp7CiAgaW50IG9bMTAwMF07CiAgaW50IGE7CiAgdmlydHVhbCB2b2lkIG5h
bWUoKSB7IGNvdXQgPDwgIkIiOyB9Cn07Cgp2b2lkICogb3BlcmF0b3IgbmV3IChzaXplX3QgcykK
ewogIHZvaWQgKiBwID0gbWFsbG9jKHMpOwogIGNvdXQgPDwgIioqKiBNZW1vcnkgQWxsb2NhdGlv
biAqKioiIDw8IGVuZGw7CiAgY291dCA8PCAiU3RhcnQ6ICAgICAgIiA8PCBwIDw8IGVuZGw7CiAg
Y291dCA8PCAiRW5kOiAgICAgICAgIiA8PCAodm9pZCAqKSAoKGNoYXIgKikgcCArIHMpIDw8IGVu
ZGw7CiAgcmV0dXJuIHA7Cn0KCmludCBtYWluKCkKewogIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgog
IEEgKiBwMiA9IG5ldyBBOwogIEIgKiBwMyA9IHN0YXRpY19jYXN0PEIgKj4ocDIpOwoKICBjb3V0
IDw8ICIqKiogQSAqKioiIDw8IGVuZGw7CiAgY291dCA8PCAiU3RhcnQ6ICAgICAgIiA8PCBwMiA8
PCBlbmRsOwogIGNvdXQgPDwgIkVuZDogICAgICAgICIgPDwgKHZvaWQgKikgKChjaGFyICopIHAy
ICsgc2l6ZW9mKCogcDIpKSA8PCBlbmRsOwoKICBjb3V0IDw8ICIqKiogQiAqKioiIDw8IGVuZGw7
CiAgY291dCA8PCAiU3RhcnQ6ICAgICAgIiA8PCBwMyA8PCBlbmRsOwogIGNvdXQgPDwgIkVuZDog
ICAgICAgICIgPDwgKHZvaWQgKikgKChjaGFyICopIHAzICsgc2l6ZW9mKCogcDMpKSA8PCBlbmRs
OwoKICBjb3V0IDw8ICJNZW1iZXIgJ2EnOiAiIDw8ICYgcDMtPmEgPDwgZW5kbDsKCiAgY291dCA8
PCAiTmFtZSA9ICAgICAgICAgICAiOyBwMy0+bmFtZSgpOyBjb3V0IDw8IGVuZGw7CiAgY291dCA8
PCAiVHlwZSBJbmZvIE5hbWUgPSAiIDw8IHR5cGVpZCgqIHAzKS5uYW1lKCkgPDwgZW5kbDsKICBw
My0+YSA9IDE7Cn0K