Not possible to specify nullable vector of strings

I want to use the g_spawn_async API that has a nullable envp argument. Looks like cppgir generates a version without working_directory argument (that I can specify as null via empty string) but no version without envp argument.

// gboolean g_spawn_async (const gchar* working_directory, gchar** argv, gchar** envp, GSpawnFlags flags, GSpawnChildSetupFunc child_setup, gpointer user_data, GPid* child_pid, GError ** error);
// gboolean g_spawn_async (const char* working_directory, char** argv, char** envp, ::GSpawnFlags flags, GLib::SpawnChildSetupFunc::cfunction_type child_setup, void* user_data, ::GPid* child_pid, GError ** error);
GI_INLINE_DECL gi::result<bool> spawn_async (const std::string & working_directory, const std::vector<std::string> & argv, const std::vector<std::string> & envp, GLib::SpawnFlags flags, GLib::SpawnChildSetupFunc child_setup, GLib::Pid * child_pid) noexcept;
GI_INLINE_DECL gi::result<bool> spawn_async (const std::vector<std::string> & argv, const std::vector<std::string> & envp, GLib::SpawnFlags flags, GLib::SpawnChildSetupFunc child_setup, GLib::Pid * child_pid) noexcept;
GI_INLINE_DECL bool spawn_async (const std::string & working_directory, const std::vector<std::string> & argv, const std::vector<std::string> & envp, GLib::SpawnFlags flags, GLib::SpawnChildSetupFunc child_setup, GLib::Pid * child_pid, GLib::Error * _error) noexcept;
GI_INLINE_DECL bool spawn_async (const std::vector<std::string> & argv, const std::vector<std::string> & envp, GLib::SpawnFlags flags, GLib::SpawnChildSetupFunc child_setup, GLib::Pid * child_pid, GLib::Error * _error) noexcept;
GI_INLINE_DECL gi::result<std::tuple<bool, GLib::Pid>> spawn_async (const std::string & working_directory, const std::vector<std::string> & argv, const std::vector<std::string> & envp, GLib::SpawnFlags flags, GLib::SpawnChildSetupFunc child_setup) noexcept;
GI_INLINE_DECL gi::result<std::tuple<bool, GLib::Pid>> spawn_async (const std::vector<std::string> & argv, const std::vector<std::string> & envp, GLib::SpawnFlags flags, GLib::SpawnChildSetupFunc child_setup) noexcept;
GI_INLINE_DECL std::tuple<bool, GLib::Pid> spawn_async (const std::string & working_directory, const std::vector<std::string> & argv, const std::vector<std::string> & envp, GLib::SpawnFlags flags, GLib::SpawnChildSetupFunc child_setup, GLib::Error * _error) noexcept;
GI_INLINE_DECL std::tuple<bool, GLib::Pid> spawn_async (const std::vector<std::string> & argv, const std::vector<std::string> & envp, GLib::SpawnFlags flags, GLib::SpawnChildSetupFunc child_setup, GLib::Error * _error) noexcept;

I guess interpreting empty vector as null wouldn't be a good idea as one might want to really run a process without any environment...

glibmm seem to just have a version without envp argument: изображение Although probably not a good solution to cppgir given that e.g. multiple nullable vectors in a row would lead to ambiguity?

Edited by Ilya Fedin