! @brief add an object to an array Appends the given element @a val to the end of the JSON value. If the function is called on a JSON null value, an empty array is created before appending @a val. @param[in] val the value to add to the JSON array @throw type_error.308 when called on a type other than JSON array or null; example: `"cannot use push_back() with number"`
| 21794 | @since version 1.0.0 |
| 21795 | */ |
| 21796 | void push_back(basic_json&& val) |
| 21797 | { |
| 21798 | // push_back only works for null objects or arrays |
| 21799 | if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_array()))) |
| 21800 | { |
| 21801 | JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); |
| 21802 | } |
| 21803 | |
| 21804 | // transform null object into an array |
| 21805 | if (is_null()) |
| 21806 | { |
| 21807 | m_type = value_t::array; |
| 21808 | m_value = value_t::array; |
| 21809 | assert_invariant(); |
| 21810 | } |
| 21811 | |
| 21812 | // add element to array (move semantics) |
| 21813 | m_value.array->push_back(std::move(val)); |
| 21814 | // if val is moved from, basic_json move constructor marks it null so we do not call the destructor |
| 21815 | } |
| 21816 | |
| 21817 | /*! |
| 21818 | @brief add an object to an array |