13150 {
13151 for (const auto &reference_token : reference_tokens)
13152 {
13153 switch (ptr->type())
13154 {
13156 {
13157
13158 ptr = &ptr->operator[](reference_token);
13159 break;
13160 }
13161
13163 {
13164 if (JSON_HEDLEY_UNLIKELY(reference_token == "-"))
13165 {
13166
13167 JSON_THROW(detail::out_of_range::create(402, "array index '-' (" + std::to_string(ptr->m_value.array->size()) + ") is out of range", *ptr));
13168 }
13169
13170
13171 ptr = &ptr->operator[](
array_index(reference_token));
13172 break;
13173 }
13174
13183 default:
13184 JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'", *ptr));
13185 }
13186 }
13187
13188 return *ptr;
13189 }
static BasicJsonType::size_type array_index(const std::string &s)
@ number_integer
number value (signed integer)
@ discarded
discarded by the parser callback function
@ binary
binary array (ordered collection of bytes)
@ object
object (unordered set of name/value pairs)
@ number_float
number value (floating-point)
@ number_unsigned
number value (unsigned integer)
@ array
array (ordered collection of values)