29#ifndef _STDEXCEPT_EXCEPT_H
30#define _STDEXCEPT_EXCEPT_H 1
35namespace std _GLIBCXX_VISIBILITY(default)
37_GLIBCXX_BEGIN_NAMESPACE_VERSION
39#if _GLIBCXX_USE_DUAL_ABI
40#if _GLIBCXX_USE_CXX11_ABI
41#if __cpp_lib_constexpr_exceptions >= 202502L
42 struct __cow_constexpr_string;
47 void _ZNSt12__cow_stringC2EPKcm(__cow_constexpr_string*,
const char*,
49 void _ZNSt12__cow_stringC2EPKcj(__cow_constexpr_string*,
const char*,
51 void _ZNSt12__cow_stringC2EPKcy(__cow_constexpr_string*,
const char*,
53 void _ZNSt12__cow_stringC2EPKc(__cow_constexpr_string*,
const char*);
54 void _ZNSt12__cow_stringC2ERKS_(__cow_constexpr_string*,
55 const __cow_constexpr_string&)
noexcept;
56 void _ZNSt12__cow_stringC2EOS_(__cow_constexpr_string*,
57 __cow_constexpr_string&&) noexcept;
58 void _ZNSt12__cow_stringD2Ev(__cow_constexpr_string*);
59 __cow_constexpr_string&
60 _ZNSt12__cow_stringaSERKS_(__cow_constexpr_string*,
61 const __cow_constexpr_string&) noexcept;
62 __cow_constexpr_string&
63 _ZNSt12__cow_stringaSEOS_(__cow_constexpr_string*,
64 __cow_constexpr_string&&) noexcept;
66 _ZNKSt12__cow_string5c_strEv(const __cow_constexpr_string*) noexcept;
73 struct __cow_constexpr_string
77 char _M_bytes[
sizeof(
const char*)];
81 [[__gnu__::__always_inline__]]
constexpr
82 __cow_constexpr_string(
const string& __o)
87 __cow_constexpr_string_ctor(__o.c_str(), __o.length());
91 [[__gnu__::__always_inline__]]
inline void
92 __cow_constexpr_string_ctor(
const char *__s,
unsigned long __l)
94 __detail::_ZNSt12__cow_stringC2EPKcm(
this, __s, __l);
97 [[__gnu__::__always_inline__]]
inline void
98 __cow_constexpr_string_ctor(
const char *__s,
unsigned int __l)
100 __detail::_ZNSt12__cow_stringC2EPKcj(
this, __s, __l);
103 [[__gnu__::__always_inline__]]
inline void
104 __cow_constexpr_string_ctor(
const char *__s,
unsigned long long __l)
106 __detail::_ZNSt12__cow_stringC2EPKcy(
this, __s, __l);
109 [[__gnu__::__always_inline__]]
constexpr
110 __cow_constexpr_string(
const char* __o)
115 __detail::_ZNSt12__cow_stringC2EPKc(
this, __o);
119 [[__gnu__::__always_inline__]]
constexpr
120 __cow_constexpr_string(
const __cow_constexpr_string& __o)
noexcept
123 _M_str =
new string(*__o._M_str);
125 __detail::_ZNSt12__cow_stringC2ERKS_(
this, __o);
129 [[__gnu__::__always_inline__]]
constexpr __cow_constexpr_string&
130 operator=(
const __cow_constexpr_string& __o)
noexcept
133 string* __p = _M_str;
134 _M_str =
new string(*__o._M_str);
138 return __detail::_ZNSt12__cow_stringaSERKS_(
this, __o);
142 [[__gnu__::__always_inline__]]
constexpr
143 ~__cow_constexpr_string()
148 __detail::_ZNSt12__cow_stringD2Ev(
this);
152 [[__gnu__::__always_inline__]]
constexpr
153 __cow_constexpr_string(__cow_constexpr_string&& __o)
noexcept
158 __detail::_ZNSt12__cow_stringC2EOS_(
this,
std::move(__o));
162 [[__gnu__::__always_inline__]]
constexpr __cow_constexpr_string&
163 operator=(__cow_constexpr_string&& __o)
noexcept
166 string* __p = _M_str;
171 return __detail::_ZNSt12__cow_stringaSEOS_(
this,
std::move(__o));
175 [[__gnu__::__always_inline__]]
constexpr const char*
176 c_str() const noexcept
179 return _M_str->c_str();
181 return __detail::_ZNKSt12__cow_string5c_strEv(
this);
186 typedef __cow_constexpr_string __cow_string;
193 char _M_bytes[
sizeof(
const char*)];
198 __cow_string(
const char*,
size_t);
199 __cow_string(
const __cow_string&) _GLIBCXX_NOTHROW;
200 __cow_string& operator=(
const __cow_string&) _GLIBCXX_NOTHROW;
202#if __cplusplus >= 201103L
203 __cow_string(__cow_string&&) noexcept;
204 __cow_string& operator=(__cow_string&&) noexcept;
209 typedef basic_string<char> __sso_string;
211 typedef basic_string<char> __cow_string;
219 size_t _M_string_length;
220 char _M_local_buf[16];
225 char _M_bytes[
sizeof(__str)];
228 __sso_string() _GLIBCXX_NOTHROW;
229 __sso_string(const std::
string&);
230 __sso_string(const
char*,
size_t);
231 __sso_string(const __sso_string&);
232 __sso_string& operator=(const __sso_string&);
234#if __cplusplus >= 201103L
235 __sso_string(__sso_string&&) noexcept;
236 __sso_string& operator=(__sso_string&&) noexcept;
241 typedef basic_string<char> __sso_string;
242 typedef basic_string<char> __cow_string;
260#if __cpp_lib_constexpr_exceptions >= 202502L
274 constexpr virtual ~logic_error() _GLIBCXX_TXN_SAFE_DYN
noexcept { }
276 constexpr virtual const char*
277 what()
const _GLIBCXX_TXN_SAFE_DYN
noexcept
279 return _M_msg.c_str();
286#if __cplusplus >= 201103L
294#if _GLIBCXX_USE_CXX11_ABI || _GLIBCXX_DEFINE_STDEXCEPT_COPY_OPS
297#elif __cplusplus >= 201103L
302 virtual ~logic_error() _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW;
307 what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW;
310# ifdef _GLIBCXX_TM_TS_INTERNAL
312 ::_txnal_logic_error_get_msg(
void* e);
321#if __cpp_lib_constexpr_exceptions >= 202502L
322 constexpr explicit domain_error(
const string& __arg) _GLIBCXX_TXN_SAFE
324 constexpr explicit domain_error(
const char* __arg) _GLIBCXX_TXN_SAFE
326 constexpr domain_error(
const domain_error&) =
default;
327 constexpr domain_error& operator=(
const domain_error&) =
default;
328 constexpr domain_error(domain_error&&) =
default;
329 constexpr domain_error& operator=(domain_error&&) =
default;
330 constexpr virtual ~domain_error() _GLIBCXX_NOTHROW { }
332 explicit domain_error(
const string& __arg) _GLIBCXX_TXN_SAFE;
333#if __cplusplus >= 201103L
334 explicit domain_error(
const char*) _GLIBCXX_TXN_SAFE;
335 domain_error(
const domain_error&) =
default;
336 domain_error& operator=(
const domain_error&) =
default;
337 domain_error(domain_error&&) =
default;
338 domain_error& operator=(domain_error&&) =
default;
340 virtual ~domain_error() _GLIBCXX_NOTHROW;
348#if __cpp_lib_constexpr_exceptions >= 202502L
349 constexpr explicit invalid_argument(
const string& __arg) _GLIBCXX_TXN_SAFE
351 constexpr explicit invalid_argument(
const char* __arg) _GLIBCXX_TXN_SAFE
353 constexpr invalid_argument(
const invalid_argument&) =
default;
354 constexpr invalid_argument& operator=(
const invalid_argument&) =
default;
355 constexpr invalid_argument(invalid_argument&&) =
default;
356 constexpr invalid_argument& operator=(invalid_argument&&) =
default;
357 constexpr virtual ~invalid_argument() _GLIBCXX_NOTHROW { }
359 explicit invalid_argument(
const string& __arg) _GLIBCXX_TXN_SAFE;
360#if __cplusplus >= 201103L
361 explicit invalid_argument(
const char*) _GLIBCXX_TXN_SAFE;
362 invalid_argument(
const invalid_argument&) =
default;
363 invalid_argument& operator=(
const invalid_argument&) =
default;
364 invalid_argument(invalid_argument&&) =
default;
365 invalid_argument& operator=(invalid_argument&&) =
default;
367 virtual ~invalid_argument() _GLIBCXX_NOTHROW;
376#if __cpp_lib_constexpr_exceptions >= 202502L
377 constexpr explicit length_error(
const string& __arg) _GLIBCXX_TXN_SAFE
379 constexpr explicit length_error(
const char* __arg) _GLIBCXX_TXN_SAFE
381 constexpr length_error(
const length_error&) =
default;
382 constexpr length_error& operator=(
const length_error&) =
default;
383 constexpr length_error(length_error&&) =
default;
384 constexpr length_error& operator=(length_error&&) =
default;
385 constexpr virtual ~length_error() _GLIBCXX_NOTHROW { }
387 explicit length_error(
const string& __arg) _GLIBCXX_TXN_SAFE;
388#if __cplusplus >= 201103L
389 explicit length_error(
const char*) _GLIBCXX_TXN_SAFE;
390 length_error(
const length_error&) =
default;
391 length_error& operator=(
const length_error&) =
default;
392 length_error(length_error&&) =
default;
393 length_error& operator=(length_error&&) =
default;
395 virtual ~length_error() _GLIBCXX_NOTHROW;
404#if __cpp_lib_constexpr_exceptions >= 202502L
405 constexpr explicit out_of_range(
const string& __arg) _GLIBCXX_TXN_SAFE
407 constexpr explicit out_of_range(
const char* __arg) _GLIBCXX_TXN_SAFE
409 constexpr out_of_range(
const out_of_range&) =
default;
410 constexpr out_of_range& operator=(
const out_of_range&) =
default;
411 constexpr out_of_range(out_of_range&&) =
default;
412 constexpr out_of_range& operator=(out_of_range&&) =
default;
413 constexpr virtual ~out_of_range() _GLIBCXX_NOTHROW { }
415 explicit out_of_range(
const string& __arg) _GLIBCXX_TXN_SAFE;
416#if __cplusplus >= 201103L
417 explicit out_of_range(
const char*) _GLIBCXX_TXN_SAFE;
418 out_of_range(
const out_of_range&) =
default;
419 out_of_range& operator=(
const out_of_range&) =
default;
420 out_of_range(out_of_range&&) =
default;
421 out_of_range& operator=(out_of_range&&) =
default;
423 virtual ~out_of_range() _GLIBCXX_NOTHROW;
437#if __cpp_lib_constexpr_exceptions >= 202502L
451 constexpr virtual ~runtime_error() _GLIBCXX_TXN_SAFE_DYN
noexcept { }
453 constexpr virtual const char*
454 what()
const _GLIBCXX_TXN_SAFE_DYN
noexcept
456 return _M_msg.c_str();
463#if __cplusplus >= 201103L
471#if _GLIBCXX_USE_CXX11_ABI || _GLIBCXX_DEFINE_STDEXCEPT_COPY_OPS
474#elif __cplusplus >= 201103L
484 what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW;
487# ifdef _GLIBCXX_TM_TS_INTERNAL
489 ::_txnal_runtime_error_get_msg(
void* e);
497#if __cpp_lib_constexpr_exceptions >= 202502L
498 constexpr explicit overflow_error(
const string& __arg) _GLIBCXX_TXN_SAFE
500 constexpr explicit overflow_error(
const char* __arg) _GLIBCXX_TXN_SAFE
502 constexpr overflow_error(
const overflow_error&) =
default;
503 constexpr overflow_error& operator=(
const overflow_error&) =
default;
504 constexpr overflow_error(overflow_error&&) =
default;
505 constexpr overflow_error& operator=(overflow_error&&) =
default;
506 constexpr virtual ~overflow_error()
noexcept { }
508 explicit overflow_error(
const string& __arg) _GLIBCXX_TXN_SAFE;
509#if __cplusplus >= 201103L
510 explicit overflow_error(
const char*) _GLIBCXX_TXN_SAFE;
511 overflow_error(
const overflow_error&) =
default;
512 overflow_error& operator=(
const overflow_error&) =
default;
513 overflow_error(overflow_error&&) =
default;
514 overflow_error& operator=(overflow_error&&) =
default;
516 virtual ~overflow_error() _GLIBCXX_NOTHROW;
524#if __cpp_lib_constexpr_exceptions >= 202502L
525 constexpr explicit underflow_error(
const string& __arg) _GLIBCXX_TXN_SAFE
527 constexpr explicit underflow_error(
const char* __arg) _GLIBCXX_TXN_SAFE
529 constexpr underflow_error(
const underflow_error&) =
default;
530 constexpr underflow_error& operator=(
const underflow_error&) =
default;
531 constexpr underflow_error(underflow_error&&) =
default;
532 constexpr underflow_error& operator=(underflow_error&&) =
default;
533 constexpr virtual ~underflow_error()
noexcept { }
535 explicit underflow_error(
const string& __arg) _GLIBCXX_TXN_SAFE;
536#if __cplusplus >= 201103L
537 explicit underflow_error(
const char*) _GLIBCXX_TXN_SAFE;
538 underflow_error(
const underflow_error&) =
default;
539 underflow_error& operator=(
const underflow_error&) =
default;
540 underflow_error(underflow_error&&) =
default;
541 underflow_error& operator=(underflow_error&&) =
default;
543 virtual ~underflow_error() _GLIBCXX_NOTHROW;
549_GLIBCXX_END_NAMESPACE_VERSION
constexpr std::remove_reference< _Tp >::type && move(_Tp &&__t) noexcept
Convert a value to an rvalue.
basic_string< char > string
A string of char.
ISO C++ entities toplevel namespace is std.
Implementation details not part of the namespace std interface.
virtual const char * what() const noexcept
logic_error(const string &__arg)
runtime_error(const string &__arg)
virtual const char * what() const noexcept