进入std::unique_ptr
lambda 时,无法调用reset()
它,因为它似乎是 const :
error C2662: void std::unique_ptr<int,std::default_delete<_Ty>>::reset(int *) noexcept': cannot convert 'this' pointer from 'const std::unique_ptr<int,std::default_delete<_Ty>>' to 'std::unique_ptr<int,std::default_delete<_Ty>> &
#include <memory>
int main()
{
auto u = std::unique_ptr<int>();
auto l = [v = std::move(u)]{
v.reset(); // this doesn't compile
};
}
- 为什么会这样?
- 是否可以以另一种方式捕获
std::unique_ptr
允许reset()
在 lambda 中调用(使用 C++17 或更高版本)?