| 127 | // push_back() overload for lvalue references |
| 128 | template <typename T> |
| 129 | void Array<T>::push_back(const T& element) |
| 130 | { |
| 131 | Array<T> newArray{m_size + 1}; // Allocate a larger Array<> |
| 132 | for (size_t i{}; i < m_size; ++i) // Move all existing elements... |
| 133 | newArray[i] = std::move(m_elements[i]); |
| 134 | |
| 135 | newArray[m_size] = element; // Copy the new one... |
| 136 | |
| 137 | swap(newArray); // ... and swap! |
| 138 | } |
| 139 | |
| 140 | // push_back() overload for rvalue references |
| 141 | template <typename T> |