gpt4 book ai didi

C++20 std::source_location 在自由函数和模板函数之间产生不同的列号

转载 作者:行者123 更新时间:2023-12-03 14:41:06 25 4
gpt4 key购买 nike

考虑模板函数 g()和免费功能f() :

#include <iostream>
#include <source_location>

auto g(auto...) {
std::cout << std::source_location::current().column() << "\n";
}

auto f() {
std::cout << std::source_location::current().column() << "\n";
}

int main() {
g();
f();
}
编译 GCC-trunk得到以下输出:
43
44
为什么 g()f()产生不同的结果?我希望结果是一样的。为什么在模板实例化过程中单位偏移消失了?

最佳答案

我提交了 PR 99672到海湾合作委员会 Bugzilla。 Jakub Jelinek(海湾合作委员会的贡献者之一)回复我:

I think the standard doesn't specify anything about what exactly thecolumn should be, so using different columns isn't standard violation.


但他仍然做了一个补丁来修复它。

关于C++20 std::source_location 在自由函数和模板函数之间产生不同的列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66709705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com