【发布时间】:2017-10-28 18:51:36
【问题描述】:
浏览 TensorFlow C++ API,我偶然发现了一个奇怪的函数签名:
Status Create(
const FileSystemStoragePathSourceConfig & config,
std::unique_ptr< FileSystemStoragePathSource > *result
)
我不明白为什么result 是指向unique_ptr 的原始指针。因为通常当我们想要将unique_ptr 作为函数参数传递时,我们可以通过移动(&&)或通过引用& 或通过值来实现。我以前没有见过指向unique_ptr 的原始指针的用例。
【问题讨论】:
-
疯狂猜测,因为编写它的人更喜欢将输出参数作为按地址而不是按引用来管理,这样调用语法很容易被误解。
-
另外,它允许输出参数是可选的。只有
std::optional之前的指针才能做到这一点。 -
"by value &" 你可能想改写一下。按引用不是按值。
标签: c++ c++11 smart-pointers unique-ptr