Boost logo

Boost :

Subject: Re: [boost] c++03 library survey
From: Joaquin M López Muñoz (joaquinlopezmunoz_at_[hidden])
Date: 2018-08-29 11:08:42


El 28/08/2018 a las 13:37, Mike Dev via Boost escribió:
> - Which library/ies are you maintaining? (I assume this isn't some
> sort of private information - otherwise ignore the question)

MultiIndex and Flyweight (I also maintain PolyCollection, but this is
C++11 from scratch).

> - Would you like to unconditionally use c++11 features if you would
> not have to worry about this breaking boost internal users?
>
> - Would you like to unconditionally use c++11 features if you would
> not have to worry about this breaking any users?

Yes. But I find these questions slightly misleading: If I don't have to
worry *at all* about
the consequences of using something, of course I'd be willing to use
should it come handy.

In practice, I fix bugs and add features respecting the C++03 baseline
because I *do worry* about
breaking my users. If something can't be written or it's too hard to
emulate in C++03, I do it in
C++1x and guard the code for backwards compatibility (for example, see
https://www.boost.org/doc/libs/develop/libs/multi_index/doc/tutorial/key_extraction.html#key
).

> - Would you deprecate your library completely if there were no
> boost-internal users and your current dependencies required
> c++11 (e.g. because your library has been merged into the c++11
> standard library anyway)

If any of my dependencies upgraded to require C++11+ I'd make an effort to
replace it or, if the dependency is isolated within one particular feature,
guard this feature to protect C++03 users and move on. If the thing became
unmaintainable then I'd be forced to require C++11 myself: in practical
terms, I see
this scenario quite unlikely. My dependencies are:

assert bind config container_hash core detail foreach integer
interprocess iterator
move mpl parameter preprocessor serialization smart_ptr static_assert
throw_exception tuple type_traits utility

which are either basically frozen (bind, foreach, mpl, preprocessor,
etc.) or are designed
with backwards compatibility in mind (move, config).

 From time to time I find a dependency has broken in an old compiler
(e.g. MultiIndex
currently breaks in MSVC 7.1 due to a problem with Integer:
https://tinyurl.com/yavmhudg ).
If the compiler is really really old I usually do nothing except when
some actual user
files a ticket.

> - Are you yourself using any boost library (in an up-to-date version)
> in a c++03, non-boost project?

No.

> - Do you have any Idea if the latest versions of your library is
> used by any important/significant number of c++02 projects?
> [It is only important if *you* consider those projects important
> and or the number significant]

I maintain a private record of projects/companies using MultiIndex that
currently
has ~300 entries, including, to drop some names: PowerDNS, CERN,
Industrial Light
& Magic, Autodesk, Amazon, MongoDB, Adobe, Baidu, BMW, Apple, Bitcoin. I
assume real figures can be easily much higher (these are only projects I
found on
Internet). I don't know for sure, but I'd be surprised if all/most of
these guys have
already migrated their codebases to C++11. I don't know if they stick to
an older
version of Boost or regualrly update.

For Flyweight I see very little use.

Best regards,

Joaquín M López Muñoz


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