Make SysBufferDeleter::operator() inlineable
authorYedidya Feldblum <yfeldblum@fb.com>
Sun, 29 Oct 2017 10:33:15 +0000 (03:33 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Sun, 29 Oct 2017 10:40:32 +0000 (03:40 -0700)
Summary: [Folly] Make `SysBufferDeleter::operator()` inlineable, specifically, into `SysBufferUniquePtr`.

Reviewed By: luciang

Differential Revision: D6182999

fbshipit-source-id: e0409c0019f21ed44d7d4c531ebc11a239f25831

folly/Memory.h

index c6c3ea2..446d889 100644 (file)
@@ -137,18 +137,12 @@ std::weak_ptr<T> to_weak_ptr(const std::shared_ptr<T>& ptr) {
   return std::weak_ptr<T>(ptr);
 }
 
   return std::weak_ptr<T>(ptr);
 }
 
-namespace detail {
-/**
- * Not all STL implementations define ::free in a way that its address can be
- * determined at compile time. So we must wrap ::free in a function whose
- * address can be determined.
- */
-inline void SysFree(void* p) {
-  ::free(p);
-}
-} // namespace detail
+struct SysBufferDeleter {
+  void operator()(void* p) const {
+    ::free(p);
+  }
+};
 
 
-using SysBufferDeleter = static_function_deleter<void, &detail::SysFree>;
 using SysBufferUniquePtr = std::unique_ptr<void, SysBufferDeleter>;
 inline SysBufferUniquePtr allocate_sys_buffer(size_t size) {
   return SysBufferUniquePtr(::malloc(size));
 using SysBufferUniquePtr = std::unique_ptr<void, SysBufferDeleter>;
 inline SysBufferUniquePtr allocate_sys_buffer(size_t size) {
   return SysBufferUniquePtr(::malloc(size));