libstdc++: new_throw.h Source File

libstdc++

new_throw.h
Go to the documentation of this file.
1// Function-Based Exception Support -*- C++ -*-
2
3// Copyright (C) 2001-2026 Free Software Foundation, Inc.
4//
5// This file is part of the GNU ISO C++ Library. This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
8// Free Software Foundation; either version 3, or (at your option)
9// any later version.
10
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU General Public License for more details.
15
16// Under Section 7 of GPL version 3, you are granted additional
17// permissions described in the GCC Runtime Library Exception, version
18// 3.1, as published by the Free Software Foundation.
19
20// You should have received a copy of the GNU General Public License and
21// a copy of the GCC Runtime Library Exception along with this program;
22// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23// <http://www.gnu.org/licenses/>.
24
25/** @file bits/new_throw.h
26 * This is an internal header file, included by other library headers.
27 * Do not attempt to use it directly. @headername{new}
28 */
29
30//
31// ISO C++ 14882: 19.1 Exception classes
32//
33
34#ifndef _NEW_THROW_H
35#define _NEW_THROW_H 1
36
37#include <bits/c++config.h>
38#include <bits/exception_defines.h>
39#if (_GLIBCXX_HOSTED && __cpp_exceptions && __cplusplus > 202302L \
40 && __cpp_constexpr_exceptions >= 202411L)
41#include <bits/new_except.h>
42#endif
43
44namespace std _GLIBCXX_VISIBILITY(default)
45{
46_GLIBCXX_BEGIN_NAMESPACE_VERSION
47
48#if _GLIBCXX_HOSTED
49#if (__cpp_exceptions && __cplusplus > 202302L \
50 && __cpp_constexpr_exceptions >= 202411L)
51 // Helper for exception objects in <new>
52 [[noreturn, __gnu__::__always_inline__]] constexpr void
53 __throw_bad_alloc(void)
54 {
55 throw bad_alloc();
56 }
57
58 [[noreturn, __gnu__::__always_inline__]] constexpr void
59 __throw_bad_array_new_length(void)
60 {
61 throw bad_array_new_length();
62 }
63#else
64 // Helper for exception objects in <new>
65 void
66 __throw_bad_alloc(void) __attribute__((__noreturn__));
67
68 void
69 __throw_bad_array_new_length(void) __attribute__((__noreturn__));
70#endif
71#endif // HOSTED
72
73_GLIBCXX_END_NAMESPACE_VERSION
74} // namespace
75
76#endif
new_except.h
exception_defines.h
c++config.h
std
ISO C++ entities toplevel namespace is std.
std::bad_alloc
Exception possibly thrown by new.
Definition new_except.h:55