1// Exception Handling support header for -*- C++ -*- 
2 
3// Copyright (C) 2016-2021 Free Software Foundation, Inc. 
4// 
5// This file is part of GCC. 
6// 
7// GCC is free software; you can redistribute it and/or modify 
8// it under the terms of the GNU General Public License as published by 
9// the Free Software Foundation; either version 3, or (at your option) 
10// any later version. 
11// 
12// GCC is distributed in the hope that it will be useful, 
13// but WITHOUT ANY WARRANTY; without even the implied warranty of 
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
15// GNU General Public License for more details. 
16// 
17// Under Section 7 of GPL version 3, you are granted additional 
18// permissions described in the GCC Runtime Library Exception, version 
19// 3.1, as published by the Free Software Foundation. 
20 
21// You should have received a copy of the GNU General Public License and 
22// a copy of the GCC Runtime Library Exception along with this program; 
23// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 
24// <http://www.gnu.org/licenses/>. 
25 
26/** @file bits/exception.h 
27 * This is an internal header file, included by other library headers. 
28 * Do not attempt to use it directly. 
29 */ 
30 
31#ifndef __EXCEPTION_H 
32#define __EXCEPTION_H 1 
33 
34#pragma GCC system_header 
35 
36#pragma GCC visibility push(default) 
37 
38#include <bits/c++config.h> 
39 
40extern "C++"
41 
42namespace std 
43
44 /** 
45 * @defgroup exceptions Exceptions 
46 * @ingroup diagnostics 
47 * @since C++98 
48 * 
49 * Classes and functions for reporting errors via exceptions. 
50 * @{ 
51 */ 
52 
53 /** 
54 * @brief Base class for all library exceptions. 
55 * 
56 * This is the base class for all exceptions thrown by the standard 
57 * library, and by certain language expressions. You are free to derive 
58 * your own %exception classes, or use a different hierarchy, or to 
59 * throw non-class data (e.g., fundamental types). 
60 */ 
61 class exception 
62
63 public
64 exception() _GLIBCXX_NOTHROW { } 
65 virtual ~exception() _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW
66#if __cplusplus >= 201103L 
67 exception(const exception&) = default
68 exception& operator=(const exception&) = default
69 exception(exception&&) = default
70 exception& operator=(exception&&) = default
71#endif 
72 
73 /** Returns a C-style character string describing the general cause 
74 * of the current error. */ 
75 virtual const char
76 what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW
77 }; 
78 
79 /// @} 
80 
81} // namespace std 
82 
83
84 
85#pragma GCC visibility pop 
86 
87#endif 
88