From 11dc485c8846cc9b06d243109a9257577e68e401 Mon Sep 17 00:00:00 2001 From: Danny Robson Date: Mon, 21 Mar 2022 10:44:44 +1000 Subject: [PATCH] cmdopt2/args: create a `parseable` trait --- cmdopt2/args.hpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cmdopt2/args.hpp b/cmdopt2/args.hpp index 65db7414..c9fa76ef 100644 --- a/cmdopt2/args.hpp +++ b/cmdopt2/args.hpp @@ -29,6 +29,10 @@ namespace cruft::cmdopt2 { }; + template + concept parseable = std::is_arithmetic_v; + + template struct ops_t : argument_t { template @@ -39,7 +43,7 @@ namespace cruft::cmdopt2 { bind (ValueT &ref) { CHECK (!acceptor1); - if constexpr (cruft::concepts::stringy) { + if constexpr (parseable) { acceptor1 = [&ref] (std::string_view str) { ref = str; }; } else { acceptor1 = [&ref] (std::string_view str) { ref = parse::from_string (str); }; @@ -53,7 +57,7 @@ namespace cruft::cmdopt2 { { CHECK (!acceptor1); - if constexpr (std::is_same_v) { + if constexpr (parseable) { acceptor1 = [&ref] (std::string_view str) { ref = str; }; } else { acceptor1 = [&ref] (std::string_view str) { ref = parse::from_string (str); };