std::source_location:: current
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Creation | ||||
|
source_location::current
|
||||
| Field access | ||||
|
static
consteval source_location current
(
)
noexcept
;
|
(C++20以降) | |
呼び出し元の位置に対応する新しい
source_location
オブジェクトを構築します。
目次 |
パラメータ
(なし)
戻り値
current()
が直接(
current()
を名指しする関数呼び出しによって)呼び出された場合、呼び出し元の位置を表す実装定義の値を持つ
source_location
オブジェクトを返します。これらの値は、事前定義マクロ
__LINE__
および
__FILE__
と同様に、
#line
プリプロセッサディレクティブ
の影響を受けるものとします。
current()
が
デフォルトメンバ初期化子
で使用された場合、戻り値はデータメンバを初期化するコンストラクタ定義または
集成体初期化
の位置に対応します。
current()
がデフォルト引数で使用される場合、戻り値は呼び出しサイトにおける
current()
の呼び出し位置に対応します。
current()
が他の方法で呼び出された場合、戻り値は未規定です。
注記
std::source_location::current
は通常、コンパイラの組み込み実装を必要とします。
例
#include <source_location> #include <iostream> struct src_rec { std::source_location srcl = std::source_location::current(); int dummy = 0; src_rec(std::source_location loc = std::source_location::current()) : srcl(loc) // メンバーの値は呼び出し元関数の位置を参照 {} src_rec(int i) : // メンバーの値はこの位置を参照 dummy(i) {} src_rec(double) // メンバーの値はこの位置を参照 {} }; std::source_location src_clone(std::source_location a = std::source_location::current()) { return a; } std::source_location src_make() { std::source_location b = std::source_location::current(); return b; } int main() { src_rec srec0; src_rec srec1(0); src_rec srec2(0.0); auto s0 = std::source_location::current(); auto s1 = src_clone(s0); auto s2 = src_clone(); auto s3 = src_make(); std::cout << srec0.srcl.line() << ' ' << srec0.srcl.function_name() << '\n' << srec1.srcl.line() << ' ' << srec1.srcl.function_name() << '\n' << srec2.srcl.line() << ' ' << srec2.srcl.function_name() << '\n' << s0.line() << ' ' << s0.function_name() << '\n' << s1.line() << ' ' << s1.function_name() << '\n' << s2.line() << ' ' << s2.function_name() << '\n' << s3.line() << ' ' << s3.function_name() << '\n'; }
出力例:
31 int main() 12 src_rec::src_rec(int) 15 src_rec::src_rec(double) 34 int main() 34 int main() 36 int main() 25 std::source_location src_make()
関連項目
実装定義の値で新しい
source_location
を構築する
(public member function) |
|
|
[static]
|
現在のスタックトレースまたはその指定された部分を取得する
(
std::basic_stacktrace<Allocator>
のpublic static member function)
|