- stacktrace[meta header]
- std[meta namespace]
- function[meta id-type]
- cpp23[meta cpp]
namespace std {
template <class Allocator>
void swap(basic_stacktrace<Allocator>& a,
basic_stacktrace<Allocator>& b)
noexcept(noexcept(a.swap(b))); // (1) C++23
}
- a.swap[link swap.md]
2つのbasic_stacktrace
オブジェクトを入れ替える。
以下と等価:
a.swap(b);
- a.swap[link swap.md]
#include <iostream>
#include <stacktrace>
void g() {
std::stacktrace a = std::stacktrace::current();
std::stacktrace b = std::stacktrace::current();
std::swap(a, b);
std::cout << a << std::endl; // bで取得したスタックトレースが出力される
}
void f() {
g();
}
int main() {
f();
}
- std::swap[color ff0000]
- current()[link current.md]
0# g() at /app/example.cpp:6
1# f() at /app/example.cpp:13
2# main at /app/example.cpp:17
3# at :0
4# at :0
5# _start at :0
6#
- C++23
- Clang: ??
- GCC: 12 [mark verified]
- Visual C++: ??