From 93ddf85a7b8f77215dda84ad83f60cb3f56b9552 Mon Sep 17 00:00:00 2001 From: Zhihao Yuan Date: Sun, 17 Nov 2019 20:05:25 -0600 Subject: [PATCH] Factor out any_cast_container --- include/argparse.hpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index fe23527..9321a93 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -341,12 +341,7 @@ private: template details::enable_if_container get() const { if (!mValues.empty()) { - using ValueType = typename CONTAINER::value_type; - CONTAINER tResult; - std::transform( - std::begin(mValues), std::end(mValues), std::back_inserter(tResult), - [](const auto &value) { return std::any_cast(value); }); - return tResult; + return any_cast_container(mValues); } if (mDefaultValue.has_value()) { return std::any_cast(mDefaultValue); @@ -354,6 +349,17 @@ private: throw std::logic_error("No value provided"); } + template + static auto any_cast_container(const std::vector &aOperand) -> T { + using ValueType = typename T::value_type; + + T tResult; + std::transform( + begin(aOperand), end(aOperand), std::back_inserter(tResult), + [](const auto &value) { return std::any_cast(value); }); + return tResult; + } + std::vector mNames; std::string mUsedName; std::string mHelp;