3#ifndef pRC_CORE_CONTAINER_ALLOCATION_H
4#define pRC_CORE_CONTAINER_ALLOCATION_H
33 template<Size S, Size P = alignof(std::max_align_t)>
37 "Proposed alignment is no proper alignment.");
49 if constexpr(
S % (
P * 2) == 0)
79 if(
reinterpret_cast<std::uintptr_t
>(
p) %
alignment != 0)
82 "Allocated memory is not aligned to alignment "
98inline
void *operator new(std::
size_t size)
100 return operator new(size,
101 static_cast<std::align_val_t
>(
alignof(std::max_align_t)));
104inline void *
operator new[](std::size_t size)
106 return operator new(size);
109inline void *
operator new(std::size_t size, std::align_val_t alignment)
114inline void *
operator new[](std::size_t size, std::align_val_t alignment)
116 return operator new(size, alignment);
119inline void *
operator new(std::size_t size,
120 [[maybe_unused]] std::nothrow_t
const &)
noexcept
122 return operator new(size);
125inline void *
operator new[](std::size_t size,
126 [[maybe_unused]] std::nothrow_t
const &)
noexcept
128 return operator new[](size);
131inline void *
operator new(std::size_t size, std::align_val_t alignment,
132 [[maybe_unused]] std::nothrow_t
const &)
noexcept
134 return operator new(size, alignment);
137inline void *
operator new[](std::size_t size, std::align_val_t alignment,
138 [[maybe_unused]] std::nothrow_t
const &)
noexcept
140 return operator new[](size, alignment);
143inline void operator delete(
void *ptr)
noexcept
148inline void operator delete[](
void *ptr)
noexcept
150 return operator delete(ptr);
153inline void operator delete(
void *ptr, std::align_val_t)
noexcept
155 return operator delete(ptr);
158inline void operator delete[](
void *ptr, std::align_val_t)
noexcept
160 return operator delete[](ptr);
163inline void operator delete(
void *ptr, std::size_t)
165 return operator delete(ptr);
168inline void operator delete[](
void *ptr, std::size_t)
170 return operator delete[](ptr);
173inline void operator delete(
void *ptr, std::size_t, std::align_val_t)
175 return operator delete(ptr);
178inline void operator delete[](
void *ptr, std::size_t, std::align_val_t)
180 return operator delete[](ptr);
183inline void operator delete(
void *ptr, std::nothrow_t
const &)
noexcept
185 return operator delete(ptr);
188inline void operator delete[](
void *ptr, std::nothrow_t
const &)
noexcept
190 return operator delete[](ptr);
193inline void operator delete(
void *ptr, std::nothrow_t
const &, std::align_val_t)
195 return operator delete(ptr);
198inline void operator delete[](
void *ptr, std::nothrow_t
const &,
201 return operator delete[](ptr);
static void error(Xs &&...args)
Definition log.hpp:14
Definition cholesky.hpp:18
static constexpr auto isProperAlignment(Size const alignment)
Definition allocation.hpp:24
std::size_t Size
Definition type_traits.hpp:20
constexpr Size cHugepageSizeByte
Definition config.hpp:49
static auto alloc(Size size, Size const alignment=alignof(std::max_align_t))
Definition allocation.hpp:60
static constexpr Conditional< IsSatisfied< C >, RemoveConstReference< X >, X > copy(X &&a)
Definition copy.hpp:13
constexpr auto cDebugLevel
Definition config.hpp:46
static constexpr auto isPowerOfTwo(T const v)
Definition is_power_of_two.hpp:11
static auto dealloc(void *ptr)
Definition allocation.hpp:90
Allocation
Definition allocation.hpp:19
static constexpr auto alignment()
Definition allocation.hpp:34
#define BEGIN_IGNORE_DIAGNOSTIC_CLANG(warning)
Definition pragma.hpp:45
#define END_IGNORE_DIAGNOSTIC_CLANG
Definition pragma.hpp:46