title: boost::program_options bug or feature?
body: <p>Very simple example:</p>
  
  <pre>
  <code>
  
  #include &lt;string&gt;
  #include &lt;boost/program_options.hpp&gt;
  
  namespace po = boost::program_options;
  
  int main(int argc, char* argv[])
  {
      po::options_description recipients("Recipient(s)");
      recipients.add_options()
          ("csv",         po::value&lt;std::string&gt;(),     ""  )
          ("csv_name",    po::value&lt;unsigned&gt;(),        ""  )
      ;
  
      po::options_description cmdline_options;
      cmdline_options.add(recipients);
  
      po::variables_map vm;
      po::store(po::command_line_parser(argc, argv).options(cmdline_options).run(), vm);
      po::notify(vm);
  
      return 0;
  }
  
  </code>
  </pre>
  
  <p>And some tests:</p>
  
  <pre>
  <code>
  &gt;Test --csv test
  in option 'csv_name': invalid option value
  
  &gt;Test --csv_name test
  in option 'csv_name': invalid option value
  
  &gt;Test --csv_name 0
  
  &gt;Test --csv text
  in option 'csv_name': invalid option value
  
  &gt;Test --csv 0
  
  &gt;Test --csv_name 0
  
  &gt;Test --csv_name 0 --csv text
  multiple occurrences
  </code>
  </pre>
  
  <p>Looks like that boost::program_option threats parameter "csv" as "csv_name".<br>
  Is it a feature or bug?</p>