ELEC-C7222
Libraries for ELEC C7222 Course Work
Loading...
Searching...
No Matches
non_copyable.hpp
Go to the documentation of this file.
1
8#ifndef BLE_NON_COPYABLE_HPP
9#define BLE_NON_COPYABLE_HPP
10
15namespace c7222 {
16
29 protected:
30 NonCopyable() = default;
31 ~NonCopyable() = default;
32
33 public:
34 NonCopyable(const NonCopyable&) = delete;
38};
39
53 protected:
54 NonMovable() = default;
55 ~NonMovable() = default;
56
57 public:
58 NonMovable(const NonMovable&) = default;
59 NonMovable& operator=(const NonMovable&) = default;
62};
63
76 protected:
79};
80
91class MovableOnly : public NonCopyable {
92 public:
93 virtual ~MovableOnly() = default;
94 // Re-enable default move operations
97
98 // Default constructor is required because defining move ops hides it
99 MovableOnly() = default;
100};
101
114class CopyableOnly : public NonMovable {
115 public:
116 // Re-enable default copy operations
117 CopyableOnly(const CopyableOnly&) = default;
119
120 // Default constructor is required because defining copy ops hides it
121 CopyableOnly() = default;
122};
123} // namespace c7222
124
125#endif // BLE_NON_COPYABLE_HPP
Convenience base that allows copy but forbids move.
Definition non_copyable.hpp:114
CopyableOnly(const CopyableOnly &)=default
CopyableOnly & operator=(const CopyableOnly &)=default
CopyableOnly()=default
Convenience base that allows move but forbids copy.
Definition non_copyable.hpp:91
MovableOnly()=default
virtual ~MovableOnly()=default
MovableOnly(MovableOnly &&)=default
MovableOnly & operator=(MovableOnly &&)=default
Disable both copy and move operations.
Definition non_copyable.hpp:75
Disable copy operations while keeping move operations enabled.
Definition non_copyable.hpp:28
NonCopyable & operator=(const NonCopyable &)=delete
~NonCopyable()=default
NonCopyable(const NonCopyable &)=delete
NonCopyable(NonCopyable &&)=default
NonCopyable & operator=(NonCopyable &&)=default
NonCopyable()=default
Disable move operations while keeping copy operations enabled.
Definition non_copyable.hpp:52
NonMovable & operator=(NonMovable &&)=delete
~NonMovable()=default
NonMovable()=default
NonMovable(const NonMovable &)=default
NonMovable & operator=(const NonMovable &)=default
NonMovable(NonMovable &&)=delete
C7222 course abstractions namespace.
Definition ble.hpp:20