This commit is contained in:
2025-10-25 03:02:53 +03:00
commit 043225d523
3416 changed files with 681196 additions and 0 deletions

View File

@@ -0,0 +1,158 @@
[stacktrace.entry]
# 19 Diagnostics library [[diagnostics]](./#diagnostics)
## 19.6 Stacktrace [[stacktrace]](stacktrace#entry)
### 19.6.3 Class stacktrace_entry [stacktrace.entry]
#### [19.6.3.1](#overview) Overview [[stacktrace.entry.overview]](stacktrace.entry.overview)
namespace std {class [stacktrace_entry](#lib:stacktrace_entry "19.6.3.1Overview[stacktrace.entry.overview]") {public:using native_handle_type = *implementation-defined*; // [[stacktrace.entry.cons]](#cons "19.6.3.2Constructors"), constructorsconstexpr stacktrace_entry() noexcept; constexpr stacktrace_entry(const stacktrace_entry& other) noexcept; constexpr stacktrace_entry& operator=(const stacktrace_entry& other) noexcept; ~stacktrace_entry(); // [[stacktrace.entry.obs]](#obs "19.6.3.3Observers"), observersconstexpr native_handle_type native_handle() const noexcept; constexpr explicit operator bool() const noexcept; // [[stacktrace.entry.query]](#query "19.6.3.4Query"), query string description() const;
string source_file() const;
uint_least32_t source_line() const; // [[stacktrace.entry.cmp]](#cmp "19.6.3.5Comparison"), comparisonfriend constexpr bool operator==(const stacktrace_entry& x, const stacktrace_entry& y) noexcept; friend constexpr strong_ordering operator<=>(const stacktrace_entry& x, const stacktrace_entry& y) noexcept; };}
[1](#overview-1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1749)
An object of type stacktrace_entry is either empty,
or represents a stacktrace entry and
provides operations for querying information about it[.](#overview-1.sentence-1)
The class stacktrace_entry models[regular](concepts.object#concept:regular "18.6Object concepts[concepts.object]") ([[concepts.object]](concepts.object "18.6Object concepts")) and[three_way_comparable](cmp.concept#concept:three_way_comparable "17.12.4Concept three_­way_­comparable[cmp.concept]")<strong_ordering> ([[cmp.concept]](cmp.concept "17.12.4Concept three_­way_­comparable"))[.](#overview-1.sentence-2)
#### [19.6.3.2](#cons) Constructors [[stacktrace.entry.cons]](stacktrace.entry.cons)
[🔗](#lib:stacktrace_entry,constructor)
`constexpr stacktrace_entry() noexcept;
`
[1](#cons-1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1765)
*Postconditions*: *this is empty[.](#cons-1.sentence-1)
#### [19.6.3.3](#obs) Observers [[stacktrace.entry.obs]](stacktrace.entry.obs)
[🔗](#lib:native_handle,stacktrace_entry)
`constexpr native_handle_type native_handle() const noexcept;
`
[1](#obs-1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1778)
The semantics of this function areimplementation-defined[.](#obs-1.sentence-1)
[2](#obs-2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1782)
*Remarks*: Successive invocations of the native_handle function
for an unchanged stacktrace_entry object return identical values[.](#obs-2.sentence-1)
[🔗](#lib:operator_bool,stacktrace_entry)
`constexpr explicit operator bool() const noexcept;
`
[3](#obs-3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1794)
*Returns*: false if and only if *this is empty[.](#obs-3.sentence-1)
#### [19.6.3.4](#query) Query [[stacktrace.entry.query]](stacktrace.entry.query)
[1](#query-1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1801)
[*Note [1](#query-note-1)*:
All the stacktrace_entry query functions treat
errors other than memory allocation errors
as “no information available” and do not throw in that case[.](#query-1.sentence-1)
— *end note*]
[🔗](#lib:description,stacktrace_entry)
`string description() const;
`
[2](#query-2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1814)
*Returns*: A description of the evaluation represented by *this,
or an empty string[.](#query-2.sentence-1)
[3](#query-3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1819)
*Throws*: bad_alloc if memory for
the internal data structures or the resulting string cannot be allocated[.](#query-3.sentence-1)
[🔗](#lib:source_file,stacktrace_entry)
`string source_file() const;
`
[4](#query-4)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1831)
*Returns*: The presumed or actual name of the source file ([[cpp.predefined]](cpp.predefined "15.12Predefined macro names"))
that lexically contains the expression or statement
whose evaluation is represented by *this, or an empty string[.](#query-4.sentence-1)
[5](#query-5)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1837)
*Throws*: bad_alloc if memory for
the internal data structures or the resulting string cannot be allocated[.](#query-5.sentence-1)
[🔗](#lib:source_line,stacktrace_entry)
`uint_least32_t source_line() const;
`
[6](#query-6)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1849)
*Returns*: 0, or a 1-based line number that lexically relates to the evaluation
represented by *this[.](#query-6.sentence-1)
If source_file returns the presumed name of the source file,
returns the presumed line number;
if source_file returns the actual name of the source file,
returns the actual line number[.](#query-6.sentence-2)
[7](#query-7)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1858)
*Throws*: bad_alloc if memory for
the internal data structures cannot be allocated[.](#query-7.sentence-1)
#### [19.6.3.5](#cmp) Comparison [[stacktrace.entry.cmp]](stacktrace.entry.cmp)
[🔗](#lib:operator==,stacktrace_entry)
`friend constexpr bool operator==(const stacktrace_entry& x, const stacktrace_entry& y) noexcept;
`
[1](#cmp-1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/diagnostics.tex#L1872)
*Returns*: true if and only if x and y represent
the same stacktrace entry or both x and y are empty[.](#cmp-1.sentence-1)