包含boost :: optional对象的std :: vector对象是否可移动?可移动的增强::可选?

use*_*453 0 c++ boost c++11

std::vector<boost::optional<double>> foo;
//populate foo.
Run Code Online (Sandbox Code Playgroud)

自新标准以来,矢量是可移动的,但不幸的是它们还没有可选的可移动的:(

  1. 任何可选动作的计划?

  2. 上述矢量是否仍然可以像任何其他矢量一样有效地移动?

Dav*_*eas 7

std::vector无论存储的类型如何,该组件都是可移动的.移动操作只需要将指针移动到一个向量中的内部缓冲区到另一个向量.存储在该缓冲区中的对象的类型是无关紧要的,因为它们保持原样.