| 107 | // Swap member function template |
| 108 | template <typename T> requires std::default_initializable<T> && std::destructible<T> |
| 109 | void Array<T>::swap(Array& other) noexcept |
| 110 | { |
| 111 | std::swap(m_elements, other.m_elements); // Swap two pointers |
| 112 | std::swap(m_size, other.m_size); // Swap the sizes |
| 113 | } |
| 114 | |
| 115 | // Swap non-member function template (optional) |
| 116 | template <typename T> requires std::default_initializable<T> && std::destructible<T> |