http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57403
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Well volatile void * is a pointer to volatile void and the pointer itself does not have the volatile on it. I think the only real issue here is the error message. IIRC allocators do not (and cannot) support volatile qualified types.