================
@@ -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

Reply via email to