From c8ab61c519599a9bec1884c6b785d21e70f83d15 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Wed, 19 Feb 2025 20:42:49 +0100 Subject: [PATCH 1/3] Refactor: replace raw loop with a function --- include/argparse.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/include/argparse.h b/include/argparse.h index 158a71d..73cefb7 100644 --- a/include/argparse.h +++ b/include/argparse.h @@ -492,10 +492,7 @@ namespace argparse auto transform(std::vector const & values) const -> std::any override { auto result = std::vector(); - for (auto const & value : values) - { - result.push_back(std::any_cast(value)); - } + std::ranges::copy(std::views::transform(values, [](auto const & value) { return std::any_cast(value); }), std::back_inserter(result)); return std::any(result); } From e7b57ef4986b566445cf5de1719bf4ea97375924 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Wed, 19 Feb 2025 20:57:43 +0100 Subject: [PATCH 2/3] Refactor: construct vector directly --- include/argparse.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/argparse.h b/include/argparse.h index 73cefb7..693e55f 100644 --- a/include/argparse.h +++ b/include/argparse.h @@ -491,9 +491,8 @@ namespace argparse auto transform(std::vector const & values) const -> std::any override { - auto result = std::vector(); - std::ranges::copy(std::views::transform(values, [](auto const & value) { return std::any_cast(value); }), std::back_inserter(result)); - return std::any(result); + auto const transformation = std::views::transform(values, [](auto const & value) { return std::any_cast(value); }); + return std::any(std::vector(transformation.begin(), transformation.end())); } auto size(std::any const & value) const -> std::size_t override From 24f7e4010d3d6366a5787d4a4733de96875816e2 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Wed, 19 Feb 2025 21:00:11 +0100 Subject: [PATCH 3/3] Cleanup: use CTAD --- include/argparse.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/argparse.h b/include/argparse.h index 693e55f..5ecbbed 100644 --- a/include/argparse.h +++ b/include/argparse.h @@ -492,7 +492,7 @@ namespace argparse auto transform(std::vector const & values) const -> std::any override { auto const transformation = std::views::transform(values, [](auto const & value) { return std::any_cast(value); }); - return std::any(std::vector(transformation.begin(), transformation.end())); + return std::any(std::vector(transformation.begin(), transformation.end())); } auto size(std::any const & value) const -> std::size_t override