有没有办法使用移动语义包装返回对象(值不是指针或引用)而不复制对象的 C++ 函数?
例子:
我有一个函数创建一个大对象 A 并使用它的移动构造函数返回它:
class A {
public:
A( A&& );
};
A createA()
{
// creates A here
return std::move(A);
}
在 C++ 中,我可以通过将 A 从函数中“移出”来避免复制它。现在,我需要使用 boost python 在 Python 中包装 A 和 createA。据我所知,当函数返回一个对象时,boost python 会自动调用 A 的复制构造函数。如果我不为 A 提供复制构造函数,编译将失败。我的问题是是否有办法在不复制的情况下将对象“移动”到 Python 世界中。