Boost logo

Boost :

From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2023-10-01 13:17:04


On 10/1/23 13:46, Andrzej Krzemienski via Boost wrote:
> Hi Everyone,
> I would like to get the community's advice on removing the support for
> InPlaceFactory from Boost.Optional.
>
> The motivation for this is to reduce dependencies among Boost libraries.
> Boost.Optional is surprisingly heavy. This is mostly due to the dependency
> on InPlaceFactory and OptionalPointee from Boost.Utility.
>
> https://pdimov.github.io/boostdep-report/develop/module-weights.html#weight:12
>
> InPlaceFactory (
> https://www.boost.org/doc/libs/1_83_0/libs/utility/doc/html/utility/utilities/in_place_factory.html)
> used to be a workaround for the missing "perfect forwarding" in C++03, it
> emulated both "universal references" and variadic templates. It is
> unnecessary for C++11 where Boost.optional offers a superior interface. But
> removing the support for InPlaceFactory would break code for people that
> happen to use it. When the user switches to C++11 (C++03 support is
> deprecated for Boost.Optional) they should expect their programs to still
> compile. But if I remove the InPlaceFactory, it forces the users to change
> their code, even if they are already on C++11.
>
> Can InPlaceFactory be moved to a separate library? Or is it so useless now
> that it has to be eradicated even at the cost of breaking users' code?
>
> I would welcome any suggestions.

>From the dependency perspective, I would move in-place factories to
Boost.Optional. I don't think any other library uses it (other than to
initialize a boost::optional), and it seems unlikely that it ever will,
now that we have perfect forwarding.

Regarding potential removal of the feature, I suppose, it's up to you to
decide. I am using it in Boost.Log, but since we're moving to C++11 as a
baseline I could switch to emplace().

However, if you decide to remove it, please provide a deprecation period
so that users have time to switch.


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