| 171 | |
| 172 | template <typename... Args> |
| 173 | void emplace_back(Args &&...x) { |
| 174 | if (is_inline()) { |
| 175 | auto &ha = m_repr.iarray; |
| 176 | if (ha.size == InlineSize) { |
| 177 | move_to_heap_vector_with_reserved_size(InlineSize + 1); |
| 178 | m_repr.hvector.vec.emplace_back(std::forward<Args>(x)...); |
| 179 | } else { |
| 180 | ha.arr[ha.size++] = T(std::forward<Args>(x)...); |
| 181 | } |
| 182 | } else { |
| 183 | m_repr.hvector.vec.emplace_back(std::forward<Args>(x)...); |
| 184 | } |
| 185 | } |
| 186 | |
| 187 | void reserve(std::size_t sz) { |
| 188 | if (is_inline()) { |