如何使用std::move移动boost::multi_array?

5

看起来 multi_array 没有移动构造函数 - 这是正确的吗?这是因为在移动语义可用之前似乎已经编写了该类,还是因为没有实现它的原因?用户能否在使用过程中做些什么来解决这个问题?


1
许多boost库并不支持C++11,这是事实。如果移动构造函数没有被删除,那么你可以认为它已经过时了。 - Tatsuyuki Ishi
1
作为一种解决方法,您可以使用multi_array_ref和原始存储(unique_ptr<T[]>)来实现具有相同接口的可移动版本。 - sehe
或者尝试通过std::swap或boost等价物进行交换 - OutOfBound
1个回答

0

Boost.MultiArray不支持移动构造(或移动赋值)。唯一的复制构造函数在boost/multi_array.hpp的第229行。

  multi_array(const multi_array& rhs);

(除了其他原因外,这就是为什么我实现了自己的数组库:https://godbolt.org/z/M1bWGj8YW


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接