18 -> std::optional<value_multiplicity> {
26 const auto hyphen_pos = str.find(
'-');
28 if (hyphen_pos == std::string_view::npos) {
31 auto [ptr, ec] = std::from_chars(str.data(), str.data() + str.size(), val);
32 if (ec != std::errc{} || ptr != str.data() + str.size()) {
41 const auto min_str = str.substr(0, hyphen_pos);
42 const auto max_str = str.substr(hyphen_pos + 1);
44 if (min_str.empty() || max_str.empty()) {
50 auto [min_ptr, min_ec] = std::from_chars(
51 min_str.data(), min_str.data() + min_str.size(), min_val);
52 if (min_ec != std::errc{} || min_ptr != min_str.data() + min_str.size()) {
60 result.
max = std::nullopt;
62 }
else if (max_str.back() ==
'n') {
64 const auto mult_str = max_str.substr(0, max_str.size() - 1);
66 auto [mult_ptr, mult_ec] = std::from_chars(
67 mult_str.data(), mult_str.data() + mult_str.size(), mult_val);
68 if (mult_ec != std::errc{} || mult_ptr != mult_str.data() + mult_str.size()) {
71 result.
max = std::nullopt;
76 auto [max_ptr, max_ec] = std::from_chars(
77 max_str.data(), max_str.data() + max_str.size(), max_val);
78 if (max_ec != std::errc{} || max_ptr != max_str.data() + max_str.size()) {