From 64b29cfebe4de1630f825c7d2c0dfa26c8249ab0 Mon Sep 17 00:00:00 2001 From: studiosi Date: Mon, 24 Aug 2026 19:43:33 +0300 Subject: [PATCH] Solved: 52 - Monadic Expected --- modules/14_cpp26/src/monadic_expected.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/modules/14_cpp26/src/monadic_expected.cpp b/modules/14_cpp26/src/monadic_expected.cpp index 5e56eae..4616464 100644 --- a/modules/14_cpp26/src/monadic_expected.cpp +++ b/modules/14_cpp26/src/monadic_expected.cpp @@ -3,18 +3,23 @@ namespace cpp26 { auto parse_id(const std::string& text) -> std::expected { - (void)text; - return std::unexpected(ErrorCode::Invalid); + int id = 0; + if (auto [ptr, ec] = std::from_chars(text.data(), text.data() + text.size(), id); + ec != std::errc{} || ptr != text.data() + text.size()) { + return std::unexpected(ErrorCode::Invalid); + } + return id; } -auto load_user(int id) -> std::expected { - (void)id; - return std::unexpected(ErrorCode::NotFound); +auto load_user(const int id) -> std::expected { + if (id == 999) { + return std::unexpected(ErrorCode::NotFound); + } + return "User-" + std::to_string(id); } auto load_user_name(const std::string& text) -> std::expected { - (void)text; - return std::unexpected(ErrorCode::Invalid); + return parse_id(text).and_then(load_user); } } // namespace cpp26