Cause the new function will become ambiguous. I use define to tell the compiler exactly what function to call. Here is the msdn document where I get this http://msdn.microsoft.com/en-us/library/x98tx3cf%28v=vs.100%29.aspx. But the problem is that, this define doesn't work on the delete operator.