我有一个类,它有一个 std::vector 数据成员。然后我有一个简单的 get 成员函数,它只是按值返回数据成员。
class X{
public:
vector<shared_ptr<MyClass>> z;
vector<shared_ptr<MyClass>> X::getVector(){
return z;
}
};
当我调用以下 C++ 时:
std::vector<boost::shared_ptr<MyClass>> my_vec = obj->getVector();
这个 x86 是产生的:
std::vector<boost::shared_ptr<MyClass>> my_vec = obj->getVector();
mov rdx,qword ptr [r8+20h]
test rdx,rdx
je boost::boost::+3DCh (013F0F690Ch)
lea rcx,[x]
call std::vector<boost::shared_ptr<MyClass>, std::allocator<boost::shared_ptr<MyClass> > >::vector (013F0E9700h)
我期望应用返回值优化 (RVO) 或std::vector
移动构造函数。但是,我无法从 x86 中推断出哪个?