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?