Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Project: CPL 4 : * Purpose: Implementation of a std::vector<> without copy capabilities 5 : * Author: Even Rouault <even dot rouault at spatialys.com> 6 : * 7 : ****************************************************************************** 8 : * Copyright (c) 2022, Even Rouault <even dot rouault at spatialys.com> 9 : * 10 : * SPDX-License-Identifier: MIT 11 : ****************************************************************************/ 12 : 13 : #ifndef CPL_NONCOPYABLEVECOTR_H_INCLUDED 14 : #define CPL_NONCOPYABLEVECOTR_H_INCLUDED 15 : 16 : #include <vector> 17 : 18 : namespace cpl 19 : { 20 : 21 : /** Derived class of std::vector<> without copy capabilities */ 22 133 : template <class T> struct NonCopyableVector : public std::vector<T> 23 : { 24 : /** Constructor 25 : * @param siz Initial size of vector. 26 : */ 27 1555 : explicit inline NonCopyableVector(size_t siz = 0) : std::vector<T>(siz) 28 : { 29 1555 : } 30 : 31 : /** Move constructor */ 32 1548 : NonCopyableVector(NonCopyableVector &&) = default; 33 : 34 : /** Move assignment operator */ 35 : NonCopyableVector &operator=(NonCopyableVector &&) = default; 36 : 37 : private: 38 : NonCopyableVector(const NonCopyableVector &) = delete; 39 : NonCopyableVector &operator=(const NonCopyableVector &) = delete; 40 : }; 41 : 42 : } // namespace cpl 43 : 44 : #endif // CPL_NONCOPYABLEVECOTR_H_INCLUDED