问题标签 [std-source-location]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何在不使用静态成员函数`current`的情况下从函数中获取源位置作为参数?
我希望我的函数通过将另一个函数作为参数get_source
来返回一个类型。std::source_location
例如,我有一个名为helloMessage
and的函数,sumOf
它具有以下参数类型和返回类型:
假设我有一个函数,它将从函数对象获取源位置,然后返回其值:
输入:
这是我的预期输出:
我怎样才能做到这一点?
c++ - source_location 不是 std 的成员
我source_location is not a member of std
在这个简单的程序中遇到了这个错误“”,我不知道为什么。我正在尝试使用源位置,但无法正确包含标题。我正在使用 Visual Studio 2019 版本 16.10.3,编译器支持说它从 19.29 (16.10)*
c++ - 结合范围适配器和 std::source_location 得到奇怪的结果
考虑以下无用的代码:
MSVC 拒绝并显示奇怪的错误消息:
61
无论在哪一行,GCC 都会输出奇怪的行号std::source_location::current()
:
上面的代码格式正确吗?如果是这样,是否意味着 MSVC 和 GCC 都有错误?
c++ - 如何使用 std::source_location 禁用构造函数的复制省略?
我正在尝试将检测添加到我的产品中广泛使用的模板类中。我目前正在VS 2019 (16.10.4)
使用/std:c++17
. 的新功能std::source_location
对于我有兴趣解决的任务来说是一个很好的补充。虽然std::source_location
并且std::experimental::source_location
在我的编译器上不可用,但我根据这个答案构建了我自己的。我的目标是在特殊的构建和运行测试中更改类构造函数/成员。对类本身的更改不会改变其用法,因此其余代码保持不变。
这一切都可以编译并且效果很好 - 主要是。除了,我遇到了几乎超出使用目的的复制省略std::source_location
。我希望我source_location
成为定义调用者变量的位置,而不是创建实际对象的位置。
gcc -std=c++20
这个问题也可以在有和没有的情况下得到证明-fno-elide-constructors
。请参阅我的最小可重现Godbolt 示例的简化版本。
我的课:
用法:
实际输出:
预期输出:
解决方法 1(显式参数):
解决方法 2 ( std::move
):
虽然上述任何解决方法都给了我想要的结果,但它们是不切实际的。这些将需要我更改使用代码的几个实例,并且会达到使用类似std::source_location
. 对MyClass.h/cpp
不破坏其使用的任何更改或对编译器标志的任何更改都是公平的游戏。我打算有一个不会在生产中使用的单独的检测构建。我的产品目前基于VS 2019 (16.10.4)
./std:c++17
c++ - operator[] 调用者的站点源位置当前解决方法
遗憾的是,当前源位置不能直接在 operator[] 的参数列表中使用,因为该运算符必须只有一个参数。但是,是否有解决方法,以便我可以获取调用者源代码行?例如,考虑以下代码: