http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59352
Bug ID: 59352
Summary: Internal compiler error
Product: gcc
Version: 4.7.3
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: vinnie.falco at gmail dot com
Created attachment 31337
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31337&action=edit
Sample code that shows both the line that crashes the compiler and a
work-around.
A function local variable is initialized using constructor syntax from a
template function call. The result is that the compiler crashes with an
internal error.
However, if the same local variable is constructed using assignment syntax, the
internal error disappears. I have a working code sample with no external
dependencies.
Here is the line that crashes:
std::size_t const id (BasicInterface::type_id <Derived> ());
Changing to the following resolves the issue:
std::size_t const id = BasicInterface::type_id <Derived> ();
The only difference is that one uses constructor syntax, and the other uses
assignment syntax.
This problem happens both in gcc 4.7.3 and also gcc 4.8.1
Tested under Ubunty 12.04