Namespaces
Variants

std::experimental:: source_location

From cppreference.net
ヘッダーで定義 <experimental/source_location>
struct source_location ;
(ライブラリ基盤 TS v2)

source_location クラスは、ファイル名、行番号、関数名など、ソースコードに関する特定の情報を表します。以前は、呼び出し元のサイトに関するこの情報(ロギング、テスト、またはデバッグの目的で)を取得したい関数は、 __LINE__ __FILE__ のような定義済みマクロが呼び出し元のコンテキストで展開されるように、マクロを使用する必要がありました。 source_location クラスはこれより優れた代替手段を提供します。

目次

メンバー関数

生成
実装定義の値で新しい source_location を構築する
(public member function)
[static]
新しい source_location を構築する
(public static member function)
その他の特殊メンバ関数
(destructor)
(implicitly declared)
source_location を破棄する
(public member function)
operator=
(implicitly declared)
暗黙的に宣言されたコピー/ムーブ代入演算子
(public member function)
フィールドアクセス
このオブジェクトが表す行番号を返す
(public member function)
このオブジェクトが表す列番号を返す
(public member function)
このオブジェクトが表すファイル名を返す
(public member function)
このオブジェクトが表す関数名を返す(存在する場合)
(public member function)

#include <experimental/source_location>
#include <iostream>
#include <string_view>
void log(const std::string_view message,
         const std::experimental::source_location location =
               std::experimental::source_location::current())
{
    std::cout << "info:"
              << location.file_name() << ':'
              << location.line() << ' '
              << message << '\n';
}
int main()
{
    log("Hello world!");
}

出力例:

info:main.cpp:15 Hello world!