Ticket #7952: move-doc.patch

File move-doc.patch, 2.9 KB (added by Akim Demaille <akim.demaille@…>, 10 years ago)

Doc fixing patch

  • libs/move/example/doc_file_descriptor.cpp

     
    3333   BOOST_MOVABLE_BUT_NOT_COPYABLE(file_descriptor)
    3434
    3535   public:
    36    explicit file_descriptor(const char *filename = 0)          //Constructor
     36   explicit file_descriptor(const char *filename = 0)          // Constructor
    3737      : os_descr_(filename ? operating_system_open_file(filename) : 0)
    38    {  if(!os_descr_) throw std::runtime_error("file not found");  }
     38   {  if(empty()) throw std::runtime_error("file not found");  }
    3939
    40    ~file_descriptor()                                          //Destructor
    41    {  if(!os_descr_)  operating_system_close_file(os_descr_);  }
     40   ~file_descriptor()                                          // Destructor
     41   {  if(!empty())  operating_system_close_file(os_descr_);  }
    4242
    4343   file_descriptor(BOOST_RV_REF(file_descriptor) x)            // Move ctor
    4444      :  os_descr_(x.os_descr_)
    45    {  x.os_descr_ = 0;  }     
     45   {  x.os_descr_ = 0;  }
    4646
    4747   file_descriptor& operator=(BOOST_RV_REF(file_descriptor) x) // Move assign
    4848   {
    49       if(!os_descr_) operating_system_close_file(os_descr_);
     49      if(!empty()) operating_system_close_file(os_descr_);
    5050      os_descr_   = x.os_descr_;
    5151      x.os_descr_ = 0;
    5252      return *this;
     
    6161#include <boost/container/vector.hpp>
    6262#include <cassert>
    6363
    64 //Remember: 'file_descriptor' is NOT copyable, but it
    65 //can be returned from functions thanks to move semantics
     64// Remember: 'file_descriptor' is NOT copyable, but it
     65// can be returned from functions thanks to move semantics
    6666file_descriptor create_file_descriptor(const char *filename)
    6767{  return file_descriptor(filename);  }
    6868
    6969int main()
    7070{
    71    //Open a file obtaining its descriptor, the temporary
    72    //returned from 'create_file_descriptor' is moved to 'fd'.
     71   // Open a file obtaining its descriptor, the temporary
     72   // returned from 'create_file_descriptor' is moved to 'fd'.
    7373   file_descriptor fd = create_file_descriptor("filename");
    7474   assert(!fd.empty());
    7575
    76    //Now move fd into a vector
     76   // Now move fd into a vector.
    7777   boost::container::vector<file_descriptor> v;
    7878   v.push_back(boost::move(fd));
    7979
    80    //Check ownership has been transferred
     80   // Check ownership has been transferred.
    8181   assert(fd.empty());
    8282   assert(!v[0].empty());
    8383
    84    //Compilation error if uncommented since file_descriptor is not copyable
    85    //and vector copy construction requires value_type's copy constructor:
    86    //boost::container::vector<file_descriptor> v2(v);
     84   // Compilation error if uncommented since file_descriptor is not copyable
     85   // and vector copy construction requires value_type's copy constructor:
     86   // boost::container::vector<file_descriptor> v2(v);
    8787   return 0;
    8888}
    8989//]