1// Exception Handling support header for -*- C++ -*- 
2 
3// Copyright (C) 2016-2019 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 * 
48 * Classes and functions for reporting errors via exception classes. 
49 * @{ 
50 */ 
51 
52 /** 
53 * @brief Base class for all library exceptions. 
54 * 
55 * This is the base class for all exceptions thrown by the standard 
56 * library, and by certain language expressions. You are free to derive 
57 * your own %exception classes, or use a different hierarchy, or to 
58 * throw non-class data (e.g., fundamental types). 
59 */ 
60 class exception 
61
62 public
63 exception() _GLIBCXX_NOTHROW { } 
64 virtual ~exception() _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW
65#if __cplusplus >= 201103L 
66 exception(const exception&) = default
67 exception& operator=(const exception&) = default
68 exception(exception&&) = default
69 exception& operator=(exception&&) = default
70#endif 
71 
72 /** Returns a C-style character string describing the general cause 
73 * of the current error. */ 
74 virtual const char
75 what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW
76 }; 
77 
78} // namespace std 
79 
80
81 
82#pragma GCC visibility pop 
83 
84#endif 
85