================
@@ -1,8 +1,175 @@
#ifndef _MEMORY_
#define _MEMORY_
+#include "stddef.h"
+
namespace std {
+template <typename T>
+struct default_delete {};
+
+template <typename T>
+struct default_delete<T[]> {};
+
+template <typename T, typename Deleter = default_delete<T>>
+class unique_ptr {
+public:
+ unique_ptr() noexcept {}
+ explicit unique_ptr(T *p) noexcept {}
+ unique_ptr(T *p, Deleter d) noexcept {}
+ unique_ptr(const unique_ptr &) = delete;
+ unique_ptr(unique_ptr &&t) noexcept {}
+ template <typename U, typename E>
+ unique_ptr(unique_ptr<U, E> &&t) noexcept {}
+ ~unique_ptr() {}
+
+ T &operator*() const { return *ptr; }
+ T *operator->() const { return ptr; }
+ explicit operator bool() const noexcept { return ptr != nullptr; }
+
+ T *get() const { return ptr; }
+ T *release() { return ptr; }
+ void reset() {}
+ void reset(T *p) {}
+
+ unique_ptr &operator=(unique_ptr &&) noexcept { return *this; }
+ template <typename U, typename E>
+ unique_ptr &operator=(unique_ptr<U, E> &&) noexcept { return *this; }
----------------
localspook wrote:
I think copy assignment needs to be deleted?
https://github.com/llvm/llvm-project/pull/186649
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits