+ bool done = false;
+ int exit_code = 0;
+
+private:
+ static Starter *_starter;
+ static Application *_app;
+ static const char *_argv0;
+ static std::string _name;
+ static void *_data;
+
+protected:
+ Application(const std::string & = std::string());
+public:
+ virtual ~Application() = default;
+
+ /** Constructs an instance of the registered application class and runs it.
+ If the application throws a usage_error, a help message is printed. The
+ GetOpt class will throw such exceptions automatically in error conditions.
+
+ This function can only be called once. The global main() function provided
+ by the library normally does it automatically at program startup. */
+ static int run(int, char **, void * = nullptr, void (*)(void *) = nullptr);
+
+ /** Sets application startup info, including argv[0] value and platform-
+ specific data.