【发布时间】:2012-05-16 09:25:53
【问题描述】:
std::string的移动赋值运算符(VC11中)如何使用?
我希望它会自动使用,因为分配后不再需要 v。 在这种情况下需要 std::move 吗?如果是这样,我还不如使用非 C++11 交换。
#include <string>
struct user_t
{
void set_name(std::string v)
{
name_ = v;
// swap(name_, v);
// name_ = std::move(v);
}
std::string name_;
};
int main()
{
user_t u;
u.set_name("Olaf");
return 0;
}
【问题讨论】:
-
我在任何地方都没有看到移动构造函数?
-
@NicolBolas:这与这个问题无关。他正在询问是否要移动班上的
std::string成员。他不是想搬家。 -
@MooingDuck:哦。好吧,那就别管了。不过,对于近距离投票,我真的无能为力……
-
@Corbin:嗯? std::string 应该有移动赋值,不是吗?
-
@XTF:Corbin(和另外两个人)误解了你的问题,并认为你试图移动
user_t。请澄清问题。
标签: c++ visual-c++ c++11 visual-studio-2012 move-semantics