On Mon, 25 Aug 2014 14:01:18 -0700, Ion Gaztañaga
El 25/08/2014 18:08, Mostafa escribió:
On Mon, 25 Aug 2014 03:23:59 -0700, Ion Gaztañaga
wrote: [snip]
I also noted that you've disabled the assignment operator taking by value. I have no idea on what can happen, as Boost.Move disables also the copy assignment taking by non-const reference.
Does that mean that when using BOOST_MOVABLE_BUT_NOT_COPYABLE clients should not delete the copy constructor or the copy assignment operator? If so, that should be documented.
I think it's documented:
http://www.boost.org/doc/libs/1_56_0/doc/html/move/movable_only_classes.html
http://www.boost.org/doc/libs/1_56_0/doc/html/BOOST_MOVABLE_BUT_NOT_COPYABLE...
Ah, ok , thanks. That information is indeed documented in the second link, but not the first. I think it should also be documented in the first link, since that page presents a formulaic instruction on how to use the library. From the first link: To write a movable but not copyable type in portable syntax, you need to follow these simple steps: - Put the following macro in the private section: BOOST_MOVABLE_BUT_NOT_COPYABLE(classname) - Write a move constructor and a move assignment taking the parameter as BOOST_RV_REF(classname) Having BOOST_MOVABLE_BUT_NOT_COPYABLE usage requirements spread across two pages is confusing IMO. I suggest adding the following to the above documentation snippet: - Do not delete the copy constructor. (In C++03 do not declare it and leave it undefined.) - Do not delete the copy assignment operator. (In C++03 do not declare it and leave it undefined.) Thanks, Mostafa