P4C
The P4 Compiler
Loading...
Searching...
No Matches
autoclone.h
1
19#ifndef _BF_P4C_LIB_AUTOCLONE_H_
20#define _BF_P4C_LIB_AUTOCLONE_H_
21
22#include <memory>
23
30template <class T, class D = std::default_delete<T>>
31class autoclone_ptr : public std::unique_ptr<T, D> {
32 public:
33 autoclone_ptr() = default;
34 autoclone_ptr(autoclone_ptr &&) = default;
35 autoclone_ptr &operator=(autoclone_ptr &&) = default;
36 autoclone_ptr(const autoclone_ptr &a) : std::unique_ptr<T, D>(a ? a->clone() : nullptr) {}
37 autoclone_ptr &operator=(const autoclone_ptr &a) {
38 auto *t = a.get();
39 this->reset(t ? t->clone() : nullptr);
40 return *this;
41 }
42};
43
44#endif /* _BF_P4C_LIB_AUTOCLONE_H_ */
Definition autoclone.h:31