From 8fa5630858715874b76fcc2c8fd75f6ce0340175 Mon Sep 17 00:00:00 2001 From: studiosi Date: Sat, 22 Aug 2026 10:24:26 +0300 Subject: [PATCH] Solved: 42 - Variant --- modules/11_cpp17/src/variant.cpp | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/modules/11_cpp17/src/variant.cpp b/modules/11_cpp17/src/variant.cpp index a926a71..48c4217 100644 --- a/modules/11_cpp17/src/variant.cpp +++ b/modules/11_cpp17/src/variant.cpp @@ -3,18 +3,32 @@ namespace cpp17 { auto variant_to_string(const Value& value) -> std::string { - (void)value; + if (std::holds_alternative(value)) { + return "int:" + std::to_string(std::get(value)); + } + if (std::holds_alternative(value)) { + return "double:" + std::to_string(std::get(value)); + } + if (std::holds_alternative(value)) { + return "string:" +std::get(value); + } return {}; } auto sum_numeric_variants(const std::vector& values) -> double { - (void)values; - return 0.0; + auto sum = 0.0; + for (const auto& value : values) { + if (std::holds_alternative(value)) { + sum += static_cast(std::get(value)); + } else if (std::holds_alternative(value)) { + sum += std::get(value); + } + } + return sum; } auto is_string(const Value& value) -> bool { - (void)value; - return false; + return std::holds_alternative(value); } } // namespace cpp17