use*_*764 5 c++ lambda pointers capture
我正在尝试捕获(按值)整个 C 样式数组。该数组似乎衰减为一个指针......我如何防止这种情况以便捕获整个数组?
代码:
#include <iostream>
int main()
{
char x[1024];
std::cerr << sizeof(x) << "\n";
[x = x] // copy
{
std::cerr << sizeof(x) << "\n";
}();
}
Run Code Online (Sandbox Code Playgroud)
这打印:
1024 <<-- yay
8 <<-- oops... not a true copy
Run Code Online (Sandbox Code Playgroud)
应该注意的是,这如我所愿(两个结果均为 1024):
#include <iostream>
#include <array>
int main()
{
std::array<char, 1024> x;
std::cerr << sizeof(x) << "\n";
[x = x] // copy
{
std::cerr << sizeof(x) << "\n";
}();
}
Run Code Online (Sandbox Code Playgroud)
[x = x]
这个等于
auto x1 = x;
Run Code Online (Sandbox Code Playgroud)
这实际上是衰减到一个指针。
只需将您的 lambda 捕获更改[x]为x按值捕获即可。您也可以通过引用捕获它[&x]。
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |