我的问题是:如果对同一位置多次调用
std::source_location::current()
,是否保证每次调用的 std::source_location
对象都是相同的?
换句话说,给出以下代码:
#include <source_location>
#include <iostream>
#include <format>
void log(const std::source_location& location = std::source_location::current())
{
std::cout << std::format("{}\n", static_cast<const void*>(&location));
}
void func()
{
log();
}
int main()
{
func();
func();
func();
}
每次调用
func()
是否保证每次都会打印相同的地址?
不,当然不是。
std::source_location::current()
按值返回,但不能保证这一点。