【发布时间】:2015-10-12 05:12:53
【问题描述】:
根据this assign 没有右值重载。我期待的函数签名是:
basic_string::assign(basic_string::basic_string &¶m);
我检查了 MSVC-2014 的实现和不提供此重载的 CGI 实现。这样做的明显优势在于
string final;
while(true){
string tmp;
// do some operation on tmp
if (ConditionSatisfied){
final.assign(move(tmp));
break;
}
}
// do further operations on final
是因为这种用例很少见吗?或者是否存在任何设计缺陷来包含重载。
【问题讨论】:
-
你可以简单地
final = std::move(temp);。 -
正如 Cubbi 在 cppreference 上所说:有
basic_string& assign( basic_string&& str );
标签: c++ c++11 stdstring rvalue