Validity of function pointers
Disclaimer: This chapter is a work-in-progress. What's contained here represents the consensus from issue #72. The statements in here are not (yet) "guaranteed" not to change until an RFC ratifies them.
A function pointer is "valid" (in the sense that it can be produced without causing immediate UB) if and only if it is non-null.
That makes this code UB:
However, any integer value other than NULL is allowed for function pointers: