Comment 2 for bug 226718

Revision history for this message
Matthias Klose (doko) wrote :

the ICE is fixed in gcc-4.2 (hardy) and gcc-4.3 (intrepid).

$ g++ -Wall test00.cpp
test00.cpp:57: error: a cast to a type other than an integral or enumeration type cannot appear in a constant-expression
test00.cpp:57: error: template argument 3 is invalid
test00.cpp:65: error: a cast to a type other than an integral or enumeration type cannot appear in a constant-expression
test00.cpp:65: error: template argument 3 is invalid
test00.cpp: In instantiation of 'TSlot<int>':
test00.cpp:61: instantiated from here
test00.cpp:43: error: 'int' is not a class, struct, or union type
test00.cpp:44: error: 'int' is not a class, struct, or union type
test00.cpp:45: error: 'int' is not a class, struct, or union type
test00.cpp:47: error: 'int' is not a class, struct, or union type
test00.cpp:49: error: 'int' is not a class, struct, or union type
test00.cpp:51: error: 'int' is not a class, struct, or union type
test00.cpp:52: error: 'int' is not a class, struct, or union type
test00.cpp: In static member function 'static const TSlot<int>& Test::SlotName()':
test00.cpp:61: error: no matching function for call to 'TSlot<int>::TSlot(int Test::*)'
test00.cpp:41: note: candidates are: TSlot<int>::TSlot(const TSlot<int>&)
test00.cpp: In static member function 'static const TSlot<int>& Test::SlotAge()':
test00.cpp:69: error: no matching function for call to 'TSlot<int>::TSlot(int Test::*)'
test00.cpp:41: note: candidates are: TSlot<int>::TSlot(const TSlot<int>&)
test00.cpp: In constructor 'Test::Test()':
test00.cpp:73: error: cannot convert 'Test' to 'int' in initialization
test00.cpp:73: error: cannot convert 'Test' to 'int' in initialization
test00.cpp: In function 'int main()':
test00.cpp:83: error: cannot convert 'std::string' to 'int' in assignment
test00.cpp:85: error: invalid type argument of 'unary *'
test00.cpp:85: error: invalid type argument of 'unary *'
test00.cpp:87: error: invalid conversion from 'int' to 'const char*'
test00.cpp:87: error: initializing argument 1 of 'std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]'