std::basic_string是否正式具有隐式生成的move构造函数

Does std::basic_string formally have an implicitly generated move constructor?

本文关键字:构造函数 move string 是否 std basic      更新时间:2023-10-16

我知道std::basic_string在实践中支持移动语义,但我在C++11中找到的右值引用参数构造函数在类定义中是这样的:

C++11§21.4/5
basic_string(basic_string&&, const Allocator&);

然后在详细的讨论中,它再次显示为没有分配器参数的默认值:

C++11§21.4.2/17
basic_string(basic_string&& str, const Allocator& alloc);

忽略了类应该是可移动的明显意图,那么该类是否正式具有隐式生成的移动构造函数?

不,它不是隐式的,而是显式的。同样在C++11中21.4/5是
basic_string(basic_string&& str) noexcept;
相关文章: