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_ext... ).
- 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