On June 15, 2015 7:31:37 PM GMT+02:00, Marc Glisse <marc.gli...@inria.fr> wrote: >On Mon, 15 Jun 2015, Martin Liška wrote: > >> Ah, I overlooked that it's not a placement new, but just static >casting. >> Anyway, if I added: >> >> cselib_val () {} >> >> to struct cselib_val and changed the cast to placement new: >> char *ptr = (char *) header; >> return new (ptr) T (); >> >> I got following compilation error: >> >> In file included from ../../gcc/alias.c:46:0: >> ../../gcc/alloc-pool.h: In instantiation of ‘T* >pool_allocator<T>::allocate() [with T = cselib_val]’: >> ../../gcc/cselib.h:51:27: required from here >> ../../gcc/alloc-pool.h:416:23: error: no matching function for call >to ‘cselib_val::operator new(sizetype, char*&)’ >> return new (ptr) T (); >> ^ >> In file included from ../../gcc/alias.c:47:0: >> ../../gcc/cselib.h:49:16: note: candidate: static void* >cselib_val::operator new(size_t) >> inline void *operator new (size_t) >> ^ >> ../../gcc/cselib.h:49:16: note: candidate expects 1 argument, 2 >provided > >#include <new>
Please include that from system.h Richard.