【发布时间】:2015-09-12 10:11:25
【问题描述】:
将 unique_ptr 传递给不执行任何操作的自定义删除器的最简洁方法是什么?我需要一个我正在编写的 JNI 函数,其中 C++ 端需要一个 unique_ptr,但是,我不希望 unique_ptr 持有的对象在退出 JNI 函数时被删除 - 我稍后会处理删除。所以我想做这样的事情:
std::unique_ptr<MyClass, noop_delete> ptr;
在一行中 - 没有单独的函数定义:-)
【问题讨论】:
-
你基本上传递了一个function pointer,它有一个空的身体。
-
“什么都不做的自定义删除器”:那你为什么需要
std::unique_ptr? -
您说“C++ 端需要一个 unique_ptr”;这在你的控制范围内吗?您能否将 C++ 端更改为 not 期望
unique_ptr? -
不在我的控制范围内 - 我必须有一个 std::unique_ptr,否则我已经删除了它:-) 我可以做一些事情,比如在 ptr 的定义点声明一个 lambda 类型内联?这就是我要找的。span>
-
@Frank 不,你不能因为 lambdas 不能被默认构造。
标签: c++ c++11 unique-ptr