std::source_location:: current
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Creation | ||||
|
source_location::current
|
||||
| Field access | ||||
|
static
consteval source_location current
(
)
noexcept
;
|
(自 C++20 起) | |
构造一个新的
source_location
对象,该对象对应于调用点的位置。
目录 |
参数
(无)
返回值
如果直接调用
current()
(通过显式命名
current()
的函数调用),它将返回一个
source_location
对象,该对象包含表示调用位置的实现定义值。这些值应受到
#line
预处理器指令
的影响,其影响方式与预定义宏
__LINE__
和
__FILE__
相同。
如果在
默认成员初始化器
中使用
current()
,其返回值对应于初始化该数据成员的构造函数定义或
聚合初始化
的位置。
如果在默认参数中使用
current()
,其返回值对应于调用点处
current()
的调用位置。
如果以任何其他方式调用
current()
,返回值是未指定的。
注释
std::source_location::current
通常需要编译器的内置实现。
示例
#include <source_location> #include <iostream> struct src_rec { std::source_location srcl = std::source_location::current(); int dummy = 0; src_rec(std::source_location loc = std::source_location::current()) : srcl(loc) // 成员的值引用调用函数的位置 {} src_rec(int i) : // 成员的值引用此位置 dummy(i) {} src_rec(double) // 成员的值引用此位置 {} }; std::source_location src_clone(std::source_location a = std::source_location::current()) { return a; } std::source_location src_make() { std::source_location b = std::source_location::current(); return b; } int main() { src_rec srec0; src_rec srec1(0); src_rec srec2(0.0); auto s0 = std::source_location::current(); auto s1 = src_clone(s0); auto s2 = src_clone(); auto s3 = src_make(); std::cout << srec0.srcl.line() << ' ' << srec0.srcl.function_name() << '\n' << srec1.srcl.line() << ' ' << srec1.srcl.function_name() << '\n' << srec2.srcl.line() << ' ' << srec2.srcl.function_name() << '\n' << s0.line() << ' ' << s0.function_name() << '\n' << s1.line() << ' ' << s1.function_name() << '\n' << s2.line() << ' ' << s2.function_name() << '\n' << s3.line() << ' ' << s3.function_name() << '\n'; }
可能的输出:
31 int main() 12 src_rec::src_rec(int) 15 src_rec::src_rec(double) 34 int main() 34 int main() 36 int main() 25 std::source_location src_make()
参阅
构造具有实现定义值的
source_location
对象
(公开成员函数) |
|
|
[static]
|
获取当前调用栈或其指定部分
(
std::basic_stacktrace<Allocator>
的公开静态成员函数)
|