I'm going off on a tangent here, but imagine if we could mark a function (or lambda) as follows:
int Func(double) throw_on_nullptr
{
. . .
}
If you try to dereference a nullptr in this function, or if you perform addition or subtraction on a nullptr, it throws std::nullptr_t.
Maybe?