The array implementation now supports move semantics and uses an std::allocator for memory management.