根据N3485 §23.3.2.2的规定:
(...) array 的隐式移动构造函数和移动赋值运算符分别要求 T 必须是 MoveConstructible 或 MoveAssignable。
因此,只有当 std::array 的元素类型满足这些条件时,它才支持移动语义。很好!
然而,这到底意味着什么?我倾向于将其视为提供符合STL接口的更安全版本的数组,但如果这是真的,那么如何使用 std::array 移动构造它的元素?我能用普通的数组做同样的事情吗?
(...) array 的隐式移动构造函数和移动赋值运算符分别要求 T 必须是 MoveConstructible 或 MoveAssignable。
因此,只有当 std::array 的元素类型满足这些条件时,它才支持移动语义。很好!
然而,这到底意味着什么?我倾向于将其视为提供符合STL接口的更安全版本的数组,但如果这是真的,那么如何使用 std::array 移动构造它的元素?我能用普通的数组做同样的事情吗?