Некоторые типы не поддаются копированию семантики, но все же могут быть сделаны подвижными. Например:
- <unique_ptr>(нераздельное, некопируемое право собственности)
- Тип, представляющий нить исполнения
- Тип, представляющий дескриптор файла
Делая такие типы подвижными (хотя все еще не копируемыми), их полезность значительно увеличивается. Подвижные, но некопируемые типы могут быть возвращены по стоимости из заводских функций:
file_descriptor create_file(/* ... */);
file_descriptor data_file;
data_file = create_file(/* ... */);  
В приведенном выше примере, лежащая в основе ручка файла передается от объекта к объекту, если источник<file_descriptor>является значением r. Во все времена существует только одна базовая ручка файла, и только один<file_descriptor>владеет ею одновременно.
Чтобы написать подвижный, но не копируемый тип в портативном синтаксисе, необходимо выполнить следующие простые действия:
Вот определение<filedescriptor>с использованием портативного синтаксиса:
#include <boost/move/utility_core.hpp>
#include <stdexcept>
class file_descriptor
{
   int os_descr_;
   private:
   BOOST_MOVABLE_BUT_NOT_COPYABLE(file_descriptor)
   public:
   explicit file_descriptor(const char *filename)              
      : os_descr_(operating_system_open_file(filename))
   {  if(!os_descr_) throw std::runtime_error("file not found");  }
   ~file_descriptor()                                          
   {  if(os_descr_)  operating_system_close_file(os_descr_);  }
   file_descriptor(BOOST_RV_REF(file_descriptor) x)            
      :  os_descr_(x.os_descr_)
   {  x.os_descr_ = 0;  }
   file_descriptor& operator=(BOOST_RV_REF(file_descriptor) x) 
   {
      if(os_descr_) operating_system_close_file(os_descr_);
      os_descr_   = x.os_descr_;
      x.os_descr_ = 0;
      return *this;
   }
   bool empty() const   {  return os_descr_ == 0;  }
};