using main_function_type = std::function< void(int, char **)>
main(int argc, char * argv, main_function_type main) -> void