std::basic_string 是否正式具有隐式生成的移动构造函数?
Does std::basic_string formally have an implicitly generated move constructor?
我知道 std::basic_string
实际上支持移动语义,但我在 C++11 中找到的右值引用参数构造函数在 class 定义中看起来像这样:
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);
无视 class 应该是可移动的明显意图,class 是否正式具有隐式生成的移动构造函数?
不,这不是隐含的,而是明确的。同样在 C++11 21.4/5 中是
basic_string(basic_string&& str) noexcept;
我知道 std::basic_string
实际上支持移动语义,但我在 C++11 中找到的右值引用参数构造函数在 class 定义中看起来像这样:
basic_string(basic_string&&, const Allocator&);
然后在详细讨论中再次显示分配器参数没有默认值:
C++11 §21.4.2/17:basic_string(basic_string&& str, const Allocator& alloc);
无视 class 应该是可移动的明显意图,class 是否正式具有隐式生成的移动构造函数?
不,这不是隐含的,而是明确的。同样在 C++11 21.4/5 中是
basic_string(basic_string&& str) noexcept;