Something went wrong. Try again.
A Tour of C++ for experienced programmers, as if C++26 is the only version that ever existed.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536#include <iostream>#include <string_view>#include <string>#include <expected>
std::expected<int, std::string> parse_int(std::string_view sv) { try { size_t pos = 0; int value = std::stoi(std::string(sv), &pos); if (pos != sv.size()) return std::unexpected<std::string>("trailing characters"); std::cout << "parsed\n"; // marker for EXPECT return value; } catch (const std::invalid_argument&) { return std::unexpected<std::string>("invalid integer"); } catch (const std::out_of_range&) { return std::unexpected<std::string>("out of range"); }}
int main(){ auto r1 = parse_int("123"); if (r1) { std::cout << "value=" << *r1 << "\n"; } else { std::cout << "error=" << r1.error() << "\n"; } auto r2 = parse_int("abc"); if (r2) { std::cout << "value=" << *r2 << "\n"; } else { std::cout << "error=" << r2.error() << "\n"; } return 0;}