#pragma once
#include <new>
#include <folly/CppAttributes.h>
#include <folly/Portability.h>
#include <folly/functional/Invoke.h>
namespace folly {
namespace detail {
#if defined(__cpp_aligned_new)
constexpr auto cpp_aligned_new_ = …;
#else
constexpr auto cpp_aligned_new_ = false;
#endif
#if defined(__cpp_sized_deallocation)
constexpr auto cpp_sized_deallocation_ = __cpp_sized_deallocation >= 201309L;
#else
constexpr auto cpp_sized_deallocation_ = …;
#endif
constexpr auto op_new_builtin_ = …__builtin_operator_new) >= 201802L;
constexpr auto op_del_builtin_ = …__builtin_operator_del) >= 201802L;
FOLLY_CREATE_QUAL_INVOKER(op_new_builtin_fn_, __builtin_operator_new);
FOLLY_CREATE_QUAL_INVOKER(op_new_library_fn_, ::operator new);
FOLLY_CREATE_QUAL_INVOKER(op_del_builtin_fn_, __builtin_operator_delete);
FOLLY_CREATE_QUAL_INVOKER(op_del_library_fn_, ::operator delete);
op_new_;
op_del_;
template <bool Usual, typename... A>
FOLLY_ERASE void do_op_del_sized_(
void* const p, std::size_t const s, A const... a) { … }
}
struct operator_new_fn { … };
inline constexpr operator_new_fn operator_new{ … };
struct operator_delete_fn { … };
inline constexpr operator_delete_fn operator_delete{ … };
}