std::source_location
提供: cppreference.com
| ヘッダ <source_location> で定義
|
||
| struct source_location; |
(C++20以上) | |
source_location クラスはソースコードに関する特定の情報 (ファイル名、行番号、関数名など) を表します。 以前は、ログやテスト、デバッグ目的などのために、呼び出し元に関するこういった情報の取得を望む関数は、__LINE__ や __FILE__ といった定義済みマクロが呼び出し元の文脈で展開されるように、マクロを使用しなければなりませんでした。 source_location クラスはより良い代替品を提供します。
source_location は DefaultConstructible、 CopyConstructible、 CopyAssignable および Destructible の要件を満たします。 source_location の左辺値は Swappable の要件を満たします。
さらに、以下の条件が true となります。
- std::is_nothrow_move_constructible_v<std::source_location>
- std::is_nothrow_move_assignable_v<std::source_location>
- std::is_nothrow_swappable_v<std::source_location>
source_location は小さいサイズで効率的にコピーできることが意図されています。
目次 |
[編集] メンバ関数
作成 | |
処理系定義の値を持つ新しい source_location を構築します (パブリックメンバ関数) | |
| [静的] |
呼び出し元の位置に対応する新しい source_location を構築します (パブリック静的メンバ関数) |
フィールドアクセス | |
| このオブジェクトが表す行番号を返します (パブリックメンバ関数) | |
| このオブジェクトが表す桁番号を返します (パブリックメンバ関数) | |
| このオブジェクトが表すファイル名を返します (パブリックメンバ関数) | |
| このオブジェクトが表す関数名 (もしあれば) を返します (パブリックメンバ関数) | |
[編集] 例
Run this code
#include <iostream> #include <string_view> #include <source_location> void log(std::string_view message, const std::source_location& location = std::source_location::current()) { std::cout << "info:" << location.file_name() << ":" << location.line() << " " << message << '\n'; } int main() { log("Hello world!"); }
出力例:
info:main.cpp:15 Hello world!

