https://github.com/potswa/cxx_function/blob/master/cxx_function.hpp#L627 Is there any reason that the exception is derived directly from `std::exception`, rather than a more specific type like `std::invalid_argument`?