38#pragma GCC system_header
43#define __glibcxx_want_launder
44#define __glibcxx_want_hardware_interference_size
45#define __glibcxx_want_destroying_delete
46#define __glibcxx_want_constexpr_new
49#pragma GCC visibility push(default)
66#if __cplusplus >= 201103L
76 virtual const char*
what()
const throw();
79#if __cplusplus >= 201103L
80 class bad_array_new_length :
public bad_alloc
83 bad_array_new_length()
throw() { }
87 virtual ~bad_array_new_length()
throw();
90 virtual const char* what()
const throw();
95 enum class align_val_t:
size_t {};
100#if __cplusplus >= 201103L
101 explicit nothrow_t() =
default;
105 extern const nothrow_t nothrow;
115#if __cplusplus >= 201103L
132_GLIBCXX_NODISCARD
void*
operator new(std::size_t) _GLIBCXX_THROW (
std::bad_alloc)
133 __attribute__((__externally_visible__));
134_GLIBCXX_NODISCARD
void*
operator new[](std::size_t) _GLIBCXX_THROW (
std::bad_alloc)
135 __attribute__((__externally_visible__));
136void operator delete(
void*) _GLIBCXX_USE_NOEXCEPT
137 __attribute__((__externally_visible__));
138void operator delete[](
void*) _GLIBCXX_USE_NOEXCEPT
139 __attribute__((__externally_visible__));
140#if __cpp_sized_deallocation
141void operator delete(
void*, std::size_t) _GLIBCXX_USE_NOEXCEPT
142 __attribute__((__externally_visible__));
143void operator delete[](
void*, std::size_t) _GLIBCXX_USE_NOEXCEPT
144 __attribute__((__externally_visible__));
146_GLIBCXX_NODISCARD
void*
operator new(std::size_t,
const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
147 __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__));
148_GLIBCXX_NODISCARD
void*
operator new[](std::size_t,
const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
149 __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__));
150void operator delete(
void*,
const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
151 __attribute__((__externally_visible__));
152void operator delete[](
void*,
const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
153 __attribute__((__externally_visible__));
155_GLIBCXX_NODISCARD
void*
operator new(std::size_t, std::align_val_t)
156 __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__));
157_GLIBCXX_NODISCARD
void*
operator new(std::size_t, std::align_val_t,
const std::nothrow_t&)
158 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__));
159void operator delete(
void*, std::align_val_t)
160 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__));
161void operator delete(
void*, std::align_val_t,
const std::nothrow_t&)
162 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__));
163_GLIBCXX_NODISCARD
void*
operator new[](std::size_t, std::align_val_t)
164 __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__));
165_GLIBCXX_NODISCARD
void*
operator new[](std::size_t, std::align_val_t,
const std::nothrow_t&)
166 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__));
167void operator delete[](
void*, std::align_val_t)
168 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__));
169void operator delete[](
void*, std::align_val_t,
const std::nothrow_t&)
170 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__));
171#if __cpp_sized_deallocation
172void operator delete(
void*, std::size_t, std::align_val_t)
173 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__));
174void operator delete[](
void*, std::size_t, std::align_val_t)
175 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__));
179#if __cpp_lib_constexpr_new >= 202406L
180# define _GLIBCXX_PLACEMENT_CONSTEXPR constexpr
182# define _GLIBCXX_PLACEMENT_CONSTEXPR inline
186_GLIBCXX_NODISCARD _GLIBCXX_PLACEMENT_CONSTEXPR
187void*
operator new(std::size_t,
void* __p) _GLIBCXX_USE_NOEXCEPT
189_GLIBCXX_NODISCARD _GLIBCXX_PLACEMENT_CONSTEXPR
190void*
operator new[](std::size_t,
void* __p) _GLIBCXX_USE_NOEXCEPT
193#undef _GLIBCXX_PLACEMENT_CONSTEXPR
196inline void operator delete (
void*,
void*) _GLIBCXX_USE_NOEXCEPT { }
197inline void operator delete[](
void*,
void*) _GLIBCXX_USE_NOEXCEPT { }
201#if __cplusplus >= 201703L
204#ifdef __cpp_lib_launder
206 template<typename _Tp>
207 [[nodiscard]]
constexpr _Tp*
208 launder(_Tp* __p)
noexcept
209 {
return __builtin_launder(__p); }
214 template<
typename _Ret,
typename... _Args _GLIBCXX_NOEXCEPT_PARM>
215 void launder(_Ret (*)(_Args...) _GLIBCXX_NOEXCEPT_QUAL) =
delete;
216 template<
typename _Ret,
typename... _Args _GLIBCXX_NOEXCEPT_PARM>
217 void launder(_Ret (*)(_Args......) _GLIBCXX_NOEXCEPT_QUAL) =
delete;
219 void launder(
void*) =
delete;
220 void launder(
const void*) =
delete;
221 void launder(
volatile void*) =
delete;
222 void launder(
const volatile void*) =
delete;
225#ifdef __cpp_lib_hardware_interference_size
226 inline constexpr size_t hardware_destructive_interference_size = __GCC_DESTRUCTIVE_SIZE;
227 inline constexpr size_t hardware_constructive_interference_size = __GCC_CONSTRUCTIVE_SIZE;
233#if __cplusplus > 201703L
247#pragma GCC visibility pop
ISO C++ entities toplevel namespace is std.
new_handler set_new_handler(new_handler)
Takes a replacement handler as the argument, returns the previous handler.
new_handler get_new_handler() noexcept
Return the current new handler.
constexpr destroying_delete_t destroying_delete
Tag variable of type destroying_delete_t.
Exception possibly thrown by new.
virtual const char * what() const
Tag type used to declare a class-specific operator delete that can invoke the destructor before deall...
Base class for all library exceptions.