http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50594
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-10-03 13:43:21 UTC --- [basic.stc.dynamic.allocation] p1 "a program is ill-formed if an allocation function is declared in a namespace scope other than global scope or declared static in global scope." So using -fwhole-program and not making replacement functions externally-visible produces an ill-formed program (which G++ should probably reject)