Le 30/09/14 20:32, Andrey Semashev a écrit :
On Tuesday 30 September 2014 20:10:41 Ion Gaztañaga wrote:
El 30/09/2014 9:33, Andrey Semashev escribió:
Hi,
I'm seeing lots of build errors that originate from Boost.Move, such as:
In file included from ../libs/log/src/text_file_backend.cpp:41: In file included from ../boost/filesystem/path.hpp:28: In file included from ../boost/iterator/iterator_facade.hpp:12: In file included from ../boost/iterator/interoperable.hpp:11: In file included from ../boost/mpl/or.hpp:23: ../boost/mpl/aux_/nested_type_wknd.hpp:27:10: error: no type named 'type' in 'boost::move_detail::is_rv<boost::rv<boost::log::v2_mt_posix::aux::light_ function<void ()> > >'
: T::type move_detail::is_rv is an implementation detail, and it previously inherited from integral_constant (inheriting with a "type" member) to just holding static const bool = xxx to minimize dependencies. Ah, right. Since it's an implementation detail I've added a workaround on my side.
Are other (public) traits changed this way? If so, that can cause breakage similar to is_rv<>.
I will add a workaround, but if you really need that trait, let's move it to the top namespace so that everyone knows it's an interface trait. I think I needed it to implement some special constructor logic, which I could not achieve with conventional Boost.Move interface. I can't remember the exact use case I had in mind when I wrote that code.
I use that trait to disable templated constructor overloads from being instantiated on rv<> wrappers. Perhaps that would be generally useful.
Hrr, Boost.Thread uses it also. Vicente