Le 16/06/14 06:47, Agustín K-ballo Bergé a écrit :
Boost.Thread has a great implementation of `invoke` in it's detail namespace. I would like to see this moved outside of Threads, so that other libraries can benefit from it (or course, only if Vicente thinks this is ok). This seems like an ideal candidate for the Detail submodule, as several other libraries have a need for this piece of functionality.
Hi Agustín, which library would make use of this function? The major problem with the current implementation is that there are a lot of corner cases and restrictions for C++98 compilers.
The implementation relies on `BOOST_THREAD_[RV|FWD]_REF`, which could be replaced by `BOOST_[RV|FWD]_REF`.
The current state of Boost.Thread (version 2 the default one) needs these thread specific `BOOST_THREAD_[RV|FWD]_REF` macros to adapt to the Boost.Thread specific emulation on version 2, and so if the invoke function in detail don't uses them Boost.Thread could not use it :( Agustín, as Boost.Thread would not profit of this (at least not immediately), would you mind to do the changes and maintain it?
This would mean introducing a dependency on Boost.Move, but I'll leave those details to the people leading the modularization effort.
Regards, The current state of the dependencies is
detail 4 -> config0 core2 mpl3 preprocessor0 static_assert1 type_traits3 move 4 ->config0 core2 mpl3 type_traits3 That means that if we add invoke to the detail module the dependencies of detail will increase of one level detail 5 ->config0 core2 move4 mpl3 preprocessor0 static_assert1 type_traits3 I don't think this would be a problem as we don't add cycles. Best, Vicente