GDAL

cpl_noncopyablevector.h
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
22 template <class T> struct NonCopyableVector : public std::vector<T>
23{
27 explicit inline NonCopyableVector(size_t siz = 0) : std::vector<T>(siz)
28 {
29 }
30
32 NonCopyableVector(NonCopyableVector &&) = default;
33
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
cpl::NonCopyableVector
Derived class of std::vector<> without copy capabilities.
Definition cpl_noncopyablevector.h:23
cpl::NonCopyableVector::NonCopyableVector
NonCopyableVector(size_t siz=0)
Constructor.
Definition cpl_noncopyablevector.h:27
cpl::NonCopyableVector::NonCopyableVector
NonCopyableVector(NonCopyableVector &&)=default
Move constructor.
cpl::NonCopyableVector::operator=
NonCopyableVector & operator=(NonCopyableVector &&)=default
Move assignment operator.