I don't believe __FUNCTION__ is standard C++ (may be in C++0x11), so for the sake of portability it is probably best avoided.

In reality, the information about the location that requested the last bit of remaining memory is not often that useful - I slightly wonder if it's worth the effort/overhead passing __FILE__ and __LINE at all, to be honest.

An alternative approach would be to call PrintStackTrace before throwing the OOM exception, which would have the advantage of having zero overhead except in the failure cases, and providing more information in the logs.