This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/11295] [3.3/3.4 Regression] *reinterpret_cast<std::string *> causes ICE
- From: "jfc at legra dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 23 Jun 2003 22:12:35 -0000
- Subject: [Bug c++/11295] [3.3/3.4 Regression] *reinterpret_cast<std::string *> causes ICE
- References: <20030623155039.11295.jfc@legra.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11295
------- Additional Comments From jfc at legra dot com 2003-06-23 22:12 -------
No question that the behavior isn't defined, but I dispute that it can't work.
My example is derived from similar code which does seem to do what I intended.
static char c[] = {3,0,0,0, 4,0,0,0, 0,0,0,0, 'H', 'i', '!', '\0'};
std::string fakestatic()
{
struct fakestring { void *p; } rv;
rv.p = &c[12];
return *reinterpret_cast<std::string *>(&rv);
}
With the particular string implementation I am using, this appears to generate a
usable std::string object. And it doesn't crash the compiler.