$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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