名前空間
変種
操作

std::source_location

提供: cppreference.com
< cpp‎ | utility
 
 
 
 
ヘッダ <source_location> で定義
struct source_location;
(C++20以上)

source_location クラスはソースコードに関する特定の情報 (ファイル名、行番号、関数名など) を表します。 以前は、ログやテスト、デバッグ目的などのために、呼び出し元に関するこういった情報の取得を望む関数は、__LINE____FILE__ といった定義済みマクロが呼び出し元の文脈で展開されるように、マクロを使用しなければなりませんでした。 source_location クラスはより良い代替品を提供します。

source_­locationDefaultConstructibleCopyConstructibleCopyAssignable および Destructible の要件を満たします。 source_location の左辺値は Swappable の要件を満たします。 さらに、以下の条件が true となります。

source_location は小さいサイズで効率的にコピーできることが意図されています。

目次

[編集] メンバ関数

作成
処理系定義の値を持つ新しい source_location を構築します
(パブリックメンバ関数) [edit]
[静的]
呼び出し元の位置に対応する新しい source_location を構築します
(パブリック静的メンバ関数) [edit]
フィールドアクセス
このオブジェクトが表す行番号を返します
(パブリックメンバ関数) [edit]
このオブジェクトが表す桁番号を返します
(パブリックメンバ関数) [edit]
このオブジェクトが表すファイル名を返します
(パブリックメンバ関数) [edit]
このオブジェクトが表す関数名 (もしあれば) を返します
(パブリックメンバ関数) [edit]

[編集]

#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!