------- Comment #2 from pinskia at gcc dot gnu dot org 2007-10-28 00:49 ------- (void) (((struct Tuple *) this)->base = TARGET_EXPR <D.2023, (struct ErrorInfo[1] *) operator new [] (4)>;, try
Note, this is not related to templates, you can reproduce the ICE with the following source too (I think ErrorInfo just needs to be a non-POD): class ErrorInfo { virtual void getErrorMessage(); }; struct Tuple { ErrorInfo* base; void AllocateMoreSpace(unsigned size) { base = (new ErrorInfo[1]) - size; } }; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33709