This patch fixes __not_null's detection of nullptr by breaking it down into 4 cases.
- __not_null(Tp const&): Default case. Tp is not null.
- __not_null(Tp* __ptr); Case for pointers to functions.
- __not_null(_Ret _Class::* __ptr); Case for pointers to members.
- __not_null(function<Tp> const&);: Cases for other std::functions.
It's not clear to me that removing this declaration is correct. There are specializations of function in this file.