38#pragma GCC system_header
43#define __glibcxx_want_launder
44#define __glibcxx_want_hardware_interference_size
45#define __glibcxx_want_destroying_delete
48#pragma GCC visibility push(default)
65#if __cplusplus >= 201103L
75 virtual const char*
what()
const throw();
78#if __cplusplus >= 201103L
79 class bad_array_new_length :
public bad_alloc
82 bad_array_new_length()
throw() { }
86 virtual ~bad_array_new_length()
throw();
89 virtual const char* what()
const throw();
94 enum class align_val_t:
size_t {};
99#if __cplusplus >= 201103L
100 explicit nothrow_t() =
default;
104 extern const nothrow_t nothrow;
114#if __cplusplus >= 201103L
131_GLIBCXX_NODISCARD
void*
operator new(std::size_t) _GLIBCXX_THROW (
std::bad_alloc)
132 __attribute__((__externally_visible__));
133_GLIBCXX_NODISCARD
void*
operator new[](std::size_t) _GLIBCXX_THROW (
std::bad_alloc)
134 __attribute__((__externally_visible__));
135void operator delete(
void*) _GLIBCXX_USE_NOEXCEPT
136 __attribute__((__externally_visible__));
137void operator delete[](
void*) _GLIBCXX_USE_NOEXCEPT
138 __attribute__((__externally_visible__));
139#if __cpp_sized_deallocation
140void operator delete(
void*, std::size_t) _GLIBCXX_USE_NOEXCEPT
141 __attribute__((__externally_visible__));
142void operator delete[](
void*, std::size_t) _GLIBCXX_USE_NOEXCEPT
143 __attribute__((__externally_visible__));
145_GLIBCXX_NODISCARD
void*
operator new(std::size_t,
const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
146 __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__));
147_GLIBCXX_NODISCARD
void*
operator new[](std::size_t,
const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
148 __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__));
149void operator delete(
void*,
const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
150 __attribute__((__externally_visible__));
151void operator delete[](
void*,
const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
152 __attribute__((__externally_visible__));
154_GLIBCXX_NODISCARD
void*
operator new(std::size_t, std::align_val_t)
155 __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__));
156_GLIBCXX_NODISCARD
void*
operator new(std::size_t, std::align_val_t,
const std::nothrow_t&)
157 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__));
158void operator delete(
void*, std::align_val_t)
159 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__));
160void operator delete(
void*, std::align_val_t,
const std::nothrow_t&)
161 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__));
162_GLIBCXX_NODISCARD
void*
operator new[](std::size_t, std::align_val_t)
163 __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__));
164_GLIBCXX_NODISCARD
void*
operator new[](std::size_t, std::align_val_t,
const std::nothrow_t&)
165 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__, __alloc_size__ (1), __malloc__));
166void operator delete[](
void*, std::align_val_t)
167 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__));
168void operator delete[](
void*, std::align_val_t,
const std::nothrow_t&)
169 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__));
170#if __cpp_sized_deallocation
171void operator delete(
void*, std::size_t, std::align_val_t)
172 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__));
173void operator delete[](
void*, std::size_t, std::align_val_t)
174 _GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__));
179_GLIBCXX_NODISCARD
inline void*
operator new(std::size_t,
void* __p) _GLIBCXX_USE_NOEXCEPT
181_GLIBCXX_NODISCARD
inline void*
operator new[](std::size_t,
void* __p) _GLIBCXX_USE_NOEXCEPT
185inline void operator delete (
void*,
void*) _GLIBCXX_USE_NOEXCEPT { }
186inline void operator delete[](
void*,
void*) _GLIBCXX_USE_NOEXCEPT { }
190#if __cplusplus >= 201703L
193#ifdef __cpp_lib_launder
195 template<typename _Tp>
196 [[nodiscard]]
constexpr _Tp*
197 launder(_Tp* __p)
noexcept
198 {
return __builtin_launder(__p); }
203 template<
typename _Ret,
typename... _Args _GLIBCXX_NOEXCEPT_PARM>
204 void launder(_Ret (*)(_Args...) _GLIBCXX_NOEXCEPT_QUAL) =
delete;
205 template<
typename _Ret,
typename... _Args _GLIBCXX_NOEXCEPT_PARM>
206 void launder(_Ret (*)(_Args......) _GLIBCXX_NOEXCEPT_QUAL) =
delete;
208 void launder(
void*) =
delete;
209 void launder(
const void*) =
delete;
210 void launder(
volatile void*) =
delete;
211 void launder(
const volatile void*) =
delete;
214#ifdef __cpp_lib_hardware_interference_size
215 inline constexpr size_t hardware_destructive_interference_size = __GCC_DESTRUCTIVE_SIZE;
216 inline constexpr size_t hardware_constructive_interference_size = __GCC_CONSTRUCTIVE_SIZE;
222#if __cplusplus > 201703L
236#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.