diff --git a/include/argparse.hpp b/include/argparse.hpp index c5e8863..4910c9a 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -150,7 +150,7 @@ public: template typename std::enable_if::value, bool>::type operator==(const T& aRhs) const { - T tLhs = get_vector(); + T tLhs = get(); if (tLhs.size() != aRhs.size()) return false; else { @@ -167,7 +167,7 @@ public: template typename std::enable_if::value, bool>::type operator==(const T& aRhs) const { - T tLhs = get_list(); + T tLhs = get(); if (tLhs.size() != aRhs.size()) return false; else { @@ -188,7 +188,9 @@ public: // Getter for template types other than std::vector and std::list template - T get() const { + typename std::enable_if::value && + !is_specialization::value, T>::type + get() const { if (mValues.empty()) { if (mDefaultValue.has_value()) { return std::any_cast(mDefaultValue); @@ -210,7 +212,8 @@ public: // Getter for std::vector. Here T = std::vector<...> template - T get_vector() const { + typename std::enable_if::value, T>::type + get() const { T tResult; if (mValues.empty()) { if (mDefaultValue.has_value()) { @@ -246,7 +249,8 @@ public: // Getter for std::list. Here T = std::list<...> template - T get_list() const { + typename std::enable_if::value, T>::type + get() const { T tResult; if (mValues.empty()) { if (mDefaultValue.has_value()) { @@ -366,9 +370,7 @@ class ArgumentParser { // Getter enabled for all template types other than std::vector and std::list template - typename std::enable_if::value && - !is_specialization::value, T>::type - get(const char * aArgumentName) { + T get(const std::string& aArgumentName) { auto tIterator = mArgumentMap.find(aArgumentName); if (tIterator != mArgumentMap.end()) { return tIterator->second->get(); @@ -376,28 +378,6 @@ class ArgumentParser { return T(); } - // Getter enabled for std::vector - template - typename std::enable_if::value, T>::type - get(const char * aArgumentName) { - auto tIterator = mArgumentMap.find(aArgumentName); - if (tIterator != mArgumentMap.end()) { - return tIterator->second->get_vector(); - } - return T(); - } - - // Getter enabled for std::list - template - typename std::enable_if::value, T>::type - get(const char * aArgumentName) { - auto tIterator = mArgumentMap.find(aArgumentName); - if (tIterator != mArgumentMap.end()) { - return tIterator->second->get_list(); - } - return T(); - } - // Indexing operator. Return a reference to an Argument object // Used in conjuction with Argument.operator== e.g., parser["foo"] == true Argument& operator[](const std::string& aArgumentName) {