fix Expected<..., eUnion> move / copy ctor
[folly.git] / folly / Memory.h
index a64ca4c83db5e2ac732aacb4f87165ff1dcaa188..442dd4f688445e554eecaa41fecdbcde6645effc 100644 (file)
@@ -17,7 +17,6 @@
 #pragma once
 
 #include <folly/Traits.h>
-#include <folly/portability/Memory.h>
 
 #include <cstddef>
 #include <cstdlib>
@@ -88,7 +87,9 @@ make_unique(Args&&...) = delete;
 
 template <typename T, void(*f)(T*)>
 struct static_function_deleter {
-  void operator()(T* t) { f(t); }
+  void operator()(T* t) const {
+    f(t);
+  }
 };
 
 /**
@@ -114,6 +115,12 @@ std::shared_ptr<T> to_shared_ptr(std::unique_ptr<T, D>&& ptr) {
   return std::shared_ptr<T>(std::move(ptr));
 }
 
+using SysBufferDeleter = static_function_deleter<void, ::free>;
+using SysBufferUniquePtr = std::unique_ptr<void, SysBufferDeleter>;
+inline SysBufferUniquePtr allocate_sys_buffer(size_t size) {
+  return SysBufferUniquePtr(::malloc(size));
+}
+
 /**
  * A SimpleAllocator must provide two methods:
  *