Make SysBufferDeleter::operator() inlineable
[folly.git] / folly / Memory.h
index c6c3ea21ddab6037dc034e6bbccbd8180a98be99..446d8896da689a61b3bfd3f698a0b5624bc8359e 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);
 }
 
-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));