diff --git a/modules/12_cpp20/src/span.cpp b/modules/12_cpp20/src/span.cpp index eae3ad1..33d1224 100644 --- a/modules/12_cpp20/src/span.cpp +++ b/modules/12_cpp20/src/span.cpp @@ -1,21 +1,23 @@ #include "span.hpp" +#include +#include + namespace cpp20 { auto span_sum(std::span data) -> int { - (void)data; - return 0; + return std::ranges::fold_left(data, 0, std::plus<>{}); } auto first_and_last(std::span data) -> std::pair { - (void)data; - return {0, 0}; + return {*data.begin(), *(--data.end())}; } -auto make_subspan(std::span data, std::size_t offset, std::size_t count) +auto make_subspan(std::span data, const std::size_t offset, std::size_t count) -> std::vector { - (void)data; (void)offset; (void)count; - return {}; + return std::views::drop(data, offset) + | std::views::take(count) + | std::ranges::to>(); } } // namespace cpp20