| 8 | |
| 9 | template <typename T> requires std::default_initializable<T> && std::destructible<T> |
| 10 | class Array |
| 11 | { |
| 12 | public: |
| 13 | Array(); |
| 14 | explicit Array(size_t size); |
| 15 | ~Array(); |
| 16 | Array(const Array& array) requires std::copyable<T>; |
| 17 | Array& operator=(const Array& rhs) requires std::copyable<T>; |
| 18 | Array(Array&& array) noexcept requires std::movable<T>; |
| 19 | Array& operator=(Array&& rhs) noexcept requires std::movable<T>; |
| 20 | void swap(Array& other) noexcept; |
| 21 | T& operator[](size_t index); |
| 22 | const T& operator[](size_t index) const; |
| 23 | size_t getSize() const { return m_size; } |
| 24 | void push_back(T element) requires std::movable<T>; |
| 25 | |
| 26 | private: |
| 27 | T* m_elements; // Array of type T |
| 28 | size_t m_size; // Number of array elements |
| 29 | }; |
| 30 | |
| 31 | // Forwarding default constructor template |
| 32 | template <typename T> requires std::default_initializable<T> && std::destructible<T> |
nothing calls this directly
no outgoing calls
no test coverage detected