boostorg / boostorg/program_options

program_options support std::vector and not boost::container::vector

Aperta
#111 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
enhancement
Lingua principale
C++
Stelle
136
Fork
117
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

It may seem rather obvious, but boost::program_options doesn't appear to support boost::container::vector in the manner it supports std::vector. An an example, creating an option:

` ("test,T", po::value >(),"Run a named test suite. -T :")
`
will cause clang to say:
```

In file included from rogue.c++:6:
In file included from /usr/local/include/boost/program_options.hpp:15:
In file included from /usr/local/include/boost/program_options/options_description.hpp:13:
In file included from /usr/local/include/boost/program_options/value_semantic.hpp:14:
In file included from /usr/local/include/boost/lexical_cast.hpp:32:
In file included from /usr/local/include/boost/lexical_cast/try_lexical_convert.hpp:44:
/usr/local/include/boost/lexical_cast/detail/converter_lexical.hpp:243:13: error: static_assert
failed due to requirement 'has_right_shift,
boost::binary_op_detail::dont_care>::value || boost::has_right_shift, boost::binary_op_detail::dont_care>::value' "Target type is
neither std::istream`able nor std::wistream`able"
...BOOST_STATIC_ASSERT_MSG((result_t::value || boost::has_right_shift, T >::value),
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

```

... among other "nice" things. I've tried creating an istream for boost::container::vector and prototyping it before including program_options, but either I am not worthy or it's not possible for me to easily retrofit.

... seems like either program_options needs to make the istream optional (I'm certainly not using it) or convince boost::container::vector to include it. Dunno.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Riproduci l'esempio segnalato di po::value> e traccia il parsing di program_options insieme alla gestione esistente di std::vector. Verifica come vengono convertiti i valori dei vettori e se il parsing richiede inutilmente un operatore istream; il lavoro è completato quando la forma dell'opzione mostrata viene analizzata correttamente senza quell'operatore e dispone di test di copertura.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
cpp
Ambito
cli
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.