std::basic_string是否正式具有隐式生成的move构造函数
Does std::basic_string formally have an implicitly generated move constructor?
我知道std::basic_string
在实践中支持移动语义,但我在C++11中找到的右值引用参数构造函数在类定义中是这样的:
basic_string(basic_string&&, const Allocator&);
然后在详细的讨论中,它再次显示为没有分配器参数的默认值:
C++11§21.4.2/17:basic_string(basic_string&& str, const Allocator& alloc);
忽略了类应该是可移动的明显意图,那么该类是否正式具有隐式生成的移动构造函数?
basic_string(basic_string&& str) noexcept;
相关文章:
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 添加自定义析构函数时,Move 构造函数在派生类中消失
- 将向量从 N1 缩小到 N2 项,而不触发默认构造函数并仅使用 move 语义
- 为什么 std::move 不将默认移动构造函数中的源变量更改为默认值?
- std::映射,只有move构造函数可用
- 为什么我的代码中没有调用move构造函数
- std::转换move构造函数的模板专业化的变体
- std::tuple默认构造函数,带有move可构造元素
- 如何调用move构造函数
- 复制初始化:为什么即使关闭了复制省略,也没有调用move或copy构造函数
- 为什么我们需要在构造函数的初始化列表中使用 std::move?
- 在构造函数中初始化成员时,是否应该在成员上使用 std::move?
- 我可以将 std::move 与不提供 move 构造函数的类一起使用吗?
- 基于范围的 std::move 调用意外复制构造函数
- C++编译错误是由于使用 std::move 时运动构造函数与其他非运动构造函数之间的冲突
- 为什么noexcept move构造函数在向量重新分配期间没有被调用
- 使用 Move 语义在构造函数中初始化类成员
- 为什么在声明析构函数时必须声明 copy & move 构造函数?
- 我应该总是在构造函数中使用 std::move 吗?
- 如果我们只定义复制构造函数/oper=,为什么移动构造函数/move赋值没有隐式声明和定义为删除