std::source_location保证重用同一个对象吗?

问题描述 投票:0回答:1

我的问题是:如果对同一位置多次调用

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()
是否保证每次都会打印相同的地址?

c++ std-source-location
1个回答
5
投票

不,当然不是。

std::source_location::current()
按值返回,但不能保证这一点。

© www.soinside.com 2019 - 2024. All rights reserved.