Передвижные, но некопируемые типы могут быть безопасно вставлены в контейнеры, а подвижные и копируемые типы более эффективно обрабатываются, если эти контейнеры внутренне используют семантику перемещения вместо семантики копирования. Если контейнер должен «изменить местоположение» элемента внутри (например, векторное перераспределение), он будет перемещать элемент вместо его копирования.Boost.ContainerКонтейнеры движимы, поэтому вы можете написать следующее:
#include <boost/container/vector.hpp>
#include <cassert>
file_descriptor create_file_descriptor(const char *filename)
{  return file_descriptor(filename);  }
int main()
{
   
   
   file_descriptor fd = create_file_descriptor("filename");
   assert(!fd.empty());
   
   boost::container::vector<file_descriptor> v;
   v.push_back(boost::move(fd));
   
   assert(fd.empty());
   assert(!v[0].empty());
   
   
   
   return 0;
}