- meta[meta header]
- std::meta[meta namespace]
- function[meta id-type]
- cpp26[meta cpp]
namespace std::meta {
consteval std::source_location source_location_of(info r);
}- info[link info.md]
リフレクションのソース位置を取得する。
任意のリフレクションを受け取れる。
rが表すエンティティが宣言されたソース位置をstd::source_locationとして返す。
ただし、以下のリフレクションに対してはデフォルト構築されたsource_location(ソース位置情報なし)を返す:
- 値
- クラス型・列挙型以外の型
- グローバル名前空間
- データメンバ仕様
それ以外のリフレクションに対する戻り値は実装定義である。
#include <meta>
#include <print>
struct MyClass {};
int main() {
constexpr auto loc = std::meta::source_location_of(^^MyClass);
std::println("{}:{}", loc.file_name(), loc.line());
}- file_name[link /reference/source_location/source_location/file_name.md]
- line[link /reference/source_location/source_location/line.md]
main.cpp:38
- C++26
- Clang: ??
- GCC: 16 (
-freflectionオプション指定) [mark verified] - Visual C++: ??