diff options
author | Jarryd Beck <jarro.2783@gmail.com> | 2021-06-01 01:10:53 +0300 |
---|---|---|
committer | Jarryd Beck <jarro.2783@gmail.com> | 2021-06-02 10:19:11 +0300 |
commit | 40ad97d8e37b55e65629d5d7e06ea0145ccc9bb4 (patch) | |
tree | 9c861c490ad157630f2333065df477f9663499e3 | |
parent | 97a4d5511ffefc81a97abd3d67b37f66e57655ee (diff) |
Fix integer parsingfix-int-parse
-rw-r--r-- | include/cxxopts.hpp | 62 |
1 files changed, 8 insertions, 54 deletions
diff --git a/include/cxxopts.hpp b/include/cxxopts.hpp index 1862c8b..ed7c759 100644 --- a/include/cxxopts.hpp +++ b/include/cxxopts.hpp @@ -921,60 +921,12 @@ namespace cxxopts } } - inline - void - parse_value(const std::string& text, uint8_t& value) - { - integer_parser(text, value); - } - - inline - void - parse_value(const std::string& text, int8_t& value) - { - integer_parser(text, value); - } - - inline - void - parse_value(const std::string& text, uint16_t& value) - { - integer_parser(text, value); - } - - inline - void - parse_value(const std::string& text, int16_t& value) - { - integer_parser(text, value); - } - - inline - void - parse_value(const std::string& text, uint32_t& value) - { - integer_parser(text, value); - } - - inline - void - parse_value(const std::string& text, int32_t& value) + template <typename T, + typename std::enable_if<std::is_integral<T>::value>::type* = nullptr + > + void parse_value(const std::string& text, T& value) { - integer_parser(text, value); - } - - inline - void - parse_value(const std::string& text, uint64_t& value) - { - integer_parser(text, value); - } - - inline - void - parse_value(const std::string& text, int64_t& value) - { - integer_parser(text, value); + integer_parser(text, value); } inline @@ -1006,7 +958,9 @@ namespace cxxopts // The fallback parser. It uses the stringstream parser to parse all types // that have not been overloaded explicitly. It has to be placed in the // source code before all other more specialized templates. - template <typename T> + template <typename T, + typename std::enable_if<!std::is_integral<T>::value>::type* = nullptr + > void parse_value(const std::string& text, T& value) { stringstream_parser(text, value); |