c++ gnu style program arguments parser