$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-users] [program_options] word-wrapping broken in presence of default arguments
From: Peter Simons (simons_at_[hidden])
Date: 2008-12-12 13:48:00
Hi,
in Boost 1.37.0, this program
  #include <iostream>
  #include <string>
  #include <boost/program_options.hpp>
  int main(int argc, char * argv[])
  {
    using namespace std;
    using namespace boost::program_options;
    options_description cmdline_options("Supported options");
    cmdline_options.add_options()
      ("help",    "this is a sufficiently long text to require word-wrapping")
      ("prefix", value<string>()->default_value("/h/proj/tmp/dispatch"), "root path of the dispatch installation")
      ;
    cerr << cmdline_options << endl;
    return 0;
  }
displays a usage message that looks weird:
 $ g++ foo.cpp -lboost_program_options.a && ./a.out
 | Supported options:
 |   --help                               this is a sufficiently long text to requ
 |                                        ire word-wrapping
 |   --prefix arg (=/h/proj/tmp/dispatch) root path of the dispatch installation
It appears that the word-wrapping algorithm can't handle the default
argument properly. Is that a known problem? Can I work around that
somehow?
I also wonder whether it's possible to format the help string such that
it's printed in the *next line*, like this:
 |   --prefix arg (=/ridiculously/long/path/that/leaves/no/room/on/right/side)
 |              root path of the dispatch installation
I tried adding a '\n' at the beginning of the help string, but that
didn't have the desired effect. Is there any way to accomplish this?
Take care,
Peter