Boost logo

Boost :

Subject: Re: [boost] [thread] Promote detail::invoke
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2014-06-16 01:16:26


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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk