通过引用将unique_ptr传递给函数

Luc*_*uca 1 c++ smart-pointers unique-ptr

我注意到我正在编译的某个库中的某个行为,这有点出乎意料,并想澄清一下.

有一个类有以下形式的方法:

void notify(Frame & frame);
Run Code Online (Sandbox Code Playgroud)

现在,有一个调用者使用unique_ptr如下:

std::unique_ptr <Frame> localFrame (new Frame(rows, cols));
Run Code Online (Sandbox Code Playgroud)

现在当它调用方法时:

obj->notify(*localFrame);
Run Code Online (Sandbox Code Playgroud)

所以这依赖于底层指针到引用的隐式转换.

我的问题是,这是跨平台和预期的行为吗?我有什么用途可以做类似的事情:

obj->notify(*localFrame->get());
Run Code Online (Sandbox Code Playgroud)

bip*_*pll 10

"一些隐式转换"是std :: unique_ptr :: operator*,它是一个非常标准的运算符,它返回对指向对象的引用.您不需要过度复杂化它.