Loading [MathJax]/extensions/tex2jax.js
Iros
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
Loading...
Searching...
No Matches
std_new.h
Go to the documentation of this file.
1#pragma once
2
3#include "di/types/size_t.h"
4#ifndef DI_NO_USE_STD
5#include <new>
6#else
7namespace std {
8enum class align_val_t : std::size_t {};
9
10struct destroying_delete_t {
11 explicit destroying_delete_t() = default;
12};
13
14constexpr inline auto destroying_delete = destroying_delete_t {};
15
16struct nothrow_t {
17 explicit nothrow_t() = default;
18};
19
20constexpr inline auto nothrow = nothrow_t {};
21
22template<typename T>
23[[nodiscard]] constexpr auto launder(T* pointer) noexcept -> T* {
24 return __builtin_launder(pointer);
25}
26}
27
28// Allocating new.
29[[nodiscard]] auto operator new(std::size_t size) -> void*;
30[[nodiscard]] auto operator new(std::size_t size, std::align_val_t alignment) -> void*;
31[[nodiscard]] auto operator new(std::size_t size, std::nothrow_t const&) noexcept -> void*;
32[[nodiscard]] auto operator new(std::size_t size, std::align_val_t alignment, std::nothrow_t const&) noexcept -> void*;
33
34// Deallocating delete.
35void operator delete(void* pointer) noexcept;
36void operator delete(void* pointer, std::size_t size) noexcept;
37void operator delete(void* pointer, std::align_val_t alignment) noexcept;
38void operator delete(void* pointer, std::size_t size, std::align_val_t alignment) noexcept;
39void operator delete(void* pointer, std::nothrow_t const&) noexcept;
40void operator delete(void* pointer, std::align_val_t alignment, std::nothrow_t const&) noexcept;
41
42// Array allocating new.
43[[nodiscard]] auto operator new[](std::size_t size) -> void*;
44[[nodiscard]] auto operator new[](std::size_t size, std::align_val_t alignment) -> void*;
45[[nodiscard]] auto operator new[](std::size_t size, std::nothrow_t const&) noexcept -> void*;
46[[nodiscard]] auto operator new[](std::size_t size, std::align_val_t alignment, std::nothrow_t const&) noexcept
47 -> void*;
48
49// Array deallocating delete.
50void operator delete[](void* pointer) noexcept;
51void operator delete[](void* pointer, std::size_t size) noexcept;
52void operator delete[](void* pointer, std::align_val_t alignment) noexcept;
53void operator delete[](void* pointer, std::size_t size, std::align_val_t alignment) noexcept;
54void operator delete[](void* pointer, std::nothrow_t const&) noexcept;
55void operator delete[](void* pointer, std::align_val_t alignment, std::nothrow_t const&) noexcept;
56
57// Placement new.
58[[nodiscard]] inline auto operator new(std::size_t, void* p) noexcept -> void* {
59 return p;
60}
61[[nodiscard]] inline auto operator new[](std::size_t, void* p) noexcept -> void* {
62 return p;
63}
64
65// Placement delete.
66inline void operator delete(void*, void*) noexcept {};
67inline void operator delete[](void*, void*) noexcept {};
68#endif
constexpr usize size
Definition gfx_test.cpp:24
Definition enable_generate_structed_bindings.h:46
@ T
Definition key.h:29