为什么 basic_string::assign 没有 r 值超载?

Why does basic_string::assign not have a r-value overload?

根据 this assign 没有右值重载。我期望的函数签名类型是:

basic_string::assign(basic_string::basic_string &&param);

我检查了 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

是不是因为这个用例很少?或者是否存在任何设计缺陷以包含过载。

您链接的同一页面确实显示了您正在寻找的过载:

basic_string& assign( basic_string&& str );

4) Replaces the contents with those of str using move semantics. str is in undefined state after the operation.

其次,考虑到它已在 MSDN.

上记录,您声称它未在 MSVC 中实现(截至 2013 年)是可疑的
basic_string(
    basic_string&& _Right
);

没有 Visual Studio 2014,但是有“14”CTP,不适用于生产环境。 Visual Studio2015年是14.0版本。实际编译号为19.00.