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
のコピー/ムーブコンストラクタおよびコピー/ムーブ代入演算子がトリビアルかどうかおよび constexpr かどうかは未規定です。
目次 |
[編集] メンバ関数
作成 | |
処理系定義の値を持つ新しい 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!