------- Comment #1 from rguenth at gcc dot gnu dot org 2010-01-06 16:30 ------- Confirmed. Older releases ICE differently.
Note that I don't see an ICE with -g0 but only with -g. With plain -g the code is even rejected: > ./cc1plus -quiet -std=c++0x t.ii ok > ./cc1plus -quiet -std=c++0x t.ii -g t.ii: In instantiation of 'const bool is_constructible<Foo, int&&>::value': t.ii:14:30: instantiated from here t.ii:5:61: error: no matching function for call to 'is_constructible<Foo, int&&>::test()' t.ii:14:30: error: 'is_constructible<Foo, int&&>::value' is not a valid template argument for type 'bool' because it is a non-constant expression t.ii: In constructor 'pair<T1, T2>::pair(const T1&, U2&&) [with U2 = Foo, <template-parameter-2-2> = void, T1 = int, T2 = Foo]': t.ii:14:30: error: 'is_constructible<Foo, int&&>::value' is not a valid template argument for type 'bool' because it is a non-constant expression -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jason at gcc dot gnu dot org Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords| |ice-on-valid-code, rejects- | |valid Known to fail| |4.3.4 4.4.2 4.5.0 Last reconfirmed|0000-00-00 00:00:00 |2010-01-06 16:30:39 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42634