This question was inspired by this answer.
I’ve always been of the philosophy that the callee is never responsible when the caller does something stupid, like passing of invalid parameters. I have arrived at this conclusion for several reasons, but perhaps the most important one comes from this article:
Everything not defined is undefined.
If a function doesn’t say in it’s docs that it’s valid to pass nullptr, then you damn well better not be passing nullptr to that function. I don’t think it’s the responsibility of the callee to deal with such things.
However, I know there are going to be some who disagree with me. I’m curious whether or not I should be checking for these things, and why.
While in general I don’t see the value in detecting NULL (why NULL and not some other invalid address?) for a public API I’d probably still do it simply because many C and C++ programmers expect such behavior.