Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jarro2783/cxxopts.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarryd Beck <jarro.2783@gmail.com>2021-06-01 01:10:53 +0300
committerJarryd Beck <jarro.2783@gmail.com>2021-06-02 10:19:11 +0300
commit40ad97d8e37b55e65629d5d7e06ea0145ccc9bb4 (patch)
tree9c861c490ad157630f2333065df477f9663499e3
parent97a4d5511ffefc81a97abd3d67b37f66e57655ee (diff)
Fix integer parsingfix-int-parse
-rw-r--r--include/cxxopts.hpp62
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);