77//
88// ===----------------------------------------------------------------------===//
99
10- #ifndef _LIBCPP_BASIC_STACKTRACE_H
11- #define _LIBCPP_BASIC_STACKTRACE_H
10+ #ifndef _LIBCPP___BASIC_STACKTRACE_H
11+ #define _LIBCPP___BASIC_STACKTRACE_H
1212
1313#include < __config>
1414
@@ -23,6 +23,7 @@ _LIBCPP_PUSH_MACROS
2323#include < __cstddef/size_t.h>
2424#include < __functional/function.h>
2525#include < __functional/hash.h>
26+ #include < __fwd/format.h>
2627#include < __iterator/iterator.h>
2728#include < __iterator/reverse_iterator.h>
2829#include < __memory/allocator_traits.h>
@@ -31,12 +32,10 @@ _LIBCPP_PUSH_MACROS
3132#include < __type_traits/is_nothrow_constructible.h>
3233#include < __vector/vector.h>
3334#include < cstddef>
34- #include < cstdint>
3535#include < string>
3636#include < utility>
3737
3838#if _LIBCPP_HAS_LOCALIZATION
39- # include < __fwd/format.h>
4039# include < __fwd/ostream.h>
4140#endif // _LIBCPP_HAS_LOCALIZATION
4241
@@ -186,26 +185,24 @@ class basic_stacktrace : private __stacktrace::_Trace {
186185 // (19.6.4.3)
187186 // [stacktrace.basic.obs], observers
188187
189- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI allocator_type get_allocator () const noexcept {
190- return __entries_.get_allocator ();
191- }
188+ _LIBCPP_HIDE_FROM_ABI allocator_type get_allocator () const noexcept { return __entries_.get_allocator (); }
192189
193- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_iterator begin () const noexcept { return __entries_.begin (); }
194- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_iterator end () const noexcept { return __entries_.end (); }
195- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin () const noexcept { return __entries_.rbegin (); }
196- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rend () const noexcept { return __entries_.rend (); }
190+ _LIBCPP_HIDE_FROM_ABI const_iterator begin () const noexcept { return __entries_.begin (); }
191+ _LIBCPP_HIDE_FROM_ABI const_iterator end () const noexcept { return __entries_.end (); }
192+ _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rbegin () const noexcept { return __entries_.rbegin (); }
193+ _LIBCPP_HIDE_FROM_ABI const_reverse_iterator rend () const noexcept { return __entries_.rend (); }
197194
198- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_iterator cbegin () const noexcept { return __entries_.cbegin (); }
199- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_iterator cend () const noexcept { return __entries_.cend (); }
200- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin () const noexcept { return __entries_.crbegin (); }
201- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend () const noexcept { return __entries_.crend (); }
195+ _LIBCPP_HIDE_FROM_ABI const_iterator cbegin () const noexcept { return __entries_.cbegin (); }
196+ _LIBCPP_HIDE_FROM_ABI const_iterator cend () const noexcept { return __entries_.cend (); }
197+ _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crbegin () const noexcept { return __entries_.crbegin (); }
198+ _LIBCPP_HIDE_FROM_ABI const_reverse_iterator crend () const noexcept { return __entries_.crend (); }
202199
203- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool empty () const noexcept { return __entries_.empty (); }
204- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI size_type size () const noexcept { return __entries_.size (); }
205- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI size_type max_size () const noexcept { return __entries_.max_size (); }
200+ _LIBCPP_HIDE_FROM_ABI bool empty () const noexcept { return __entries_.empty (); }
201+ _LIBCPP_HIDE_FROM_ABI size_type size () const noexcept { return __entries_.size (); }
202+ _LIBCPP_HIDE_FROM_ABI size_type max_size () const noexcept { return __entries_.max_size (); }
206203
207- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_reference operator [](size_type __i) const { return __entries_[__i]; }
208- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI const_reference at (size_type __i) const { return __entries_.at (__i); }
204+ _LIBCPP_HIDE_FROM_ABI const_reference operator [](size_type __i) const { return __entries_[__i]; }
205+ _LIBCPP_HIDE_FROM_ABI const_reference at (size_type __i) const { return __entries_.at (__i); }
209206
210207 // (19.6.4.4)
211208 // [stacktrace.basic.cmp], comparisons
@@ -269,27 +266,26 @@ swap(basic_stacktrace<_Allocator>& __a, basic_stacktrace<_Allocator>& __b) noexc
269266}
270267
271268# if _LIBCPP_HAS_LOCALIZATION
272- template <class _Allocator >
273- _LIBCPP_HIDE_FROM_ABI inline ostream& operator <<(ostream& __os, const basic_stacktrace<_Allocator>& __stacktrace) {
274- return ((__stacktrace::_Trace const &)__stacktrace).write_to (__os);
275- }
269+
276270template <class _Allocator >
277271_LIBCPP_HIDE_FROM_ABI inline string to_string (const basic_stacktrace<_Allocator>& __stacktrace) {
278272 return ((__stacktrace::_Trace const &)__stacktrace).to_string ();
279273}
274+
275+ template <class _Allocator >
276+ _LIBCPP_HIDE_FROM_ABI inline ostream& operator <<(ostream& __os, const basic_stacktrace<_Allocator>& __stacktrace) {
277+ return ((__stacktrace::_Trace const &)__stacktrace).write_to (__os);
278+ }
279+
280280# endif // _LIBCPP_HAS_LOCALIZATION
281281
282282// (19.6.6)
283283// Hash support [stacktrace.basic.hash]
284284
285285template <class _Allocator >
286286struct hash <basic_stacktrace<_Allocator>> {
287- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI size_t operator ()(basic_stacktrace<_Allocator> const & __context) const noexcept {
288- size_t __ret = 1 ;
289- for (auto const & __entry : __context.__entries_ ) {
290- __ret += hash<uintptr_t >()(__entry.native_handle ());
291- }
292- return __ret;
287+ _LIBCPP_HIDE_FROM_ABI size_t operator ()(basic_stacktrace<_Allocator> const & __trace) const noexcept {
288+ return hash (__trace.__entries_ )();
293289 }
294290};
295291
@@ -344,4 +340,4 @@ _LIBCPP_END_NAMESPACE_STD
344340
345341_LIBCPP_POP_MACROS
346342
347- #endif // _LIBCPP_BASIC_STACKTRACE_H
343+ #endif // _LIBCPP___BASIC_STACKTRACE_H
0 commit comments