http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47488
--- Comment #5 from Jason Merrill <jason at gcc dot gnu.org> 2011-03-08 17:06:20 UTC --- So, the basic problem is that we still don't know how to mangle string constants, it just changed from a sorry to an ICE. There was a mangling proposed on the ABI list, but while looking at it I realized that it isn't sufficient--it produces a multiply defined symbol for template <typename T> constexpr T f(const T* p) { return p[0]; } template<int> struct N { }; template <typename T> void g(T, N<f((const T*)"1")>) { } template <typename T> void g(T, N<f((const T*)"2")>) { } int main() { g('1', N<'1'>()); g('2', N<'2'>()); }