-----Original Message----- From: Boost
On Behalf Of Paul A. Bristow via Boost Sent: Monday, November 5, 2018 1:26 PM My view is that it is up to you to decide (but asking for views is good too).
If it is not too difficult to make it continue to be C++03 compatible and yet allow C++11 (or higher) improvements then you should do this.
For example, if you can easily write
#ifdef BOOST_NO_C11_feature
do the current C++03 stuff (even full function definition)
#else
do the enhanced version
#endif
then you should do so, in order to avoid, as RyanAir CEO Michael O'Leary put it
"We should try to eliminate things that unnecessarily piss people off,"
(See https://www.reuters.com/article/us-ryanair/ryanair-unveils-new-strategy-be-n... customers-idUSBRE98J0DF20130920 for sordid details)
Just saying. #ifdef BOOST_NO_C11_feature can become extremely annoying for the user, because you effectively have to make sure that all translation units including that header have to be compiled with the same c++ standard setting (yes, it isn't actually necessary when you are careful, but the complexity and testing overhead will probably negate much of the advantage you gain by using c++11 features instead of 03 workarounds).
but if this proves difficult (and trying it may be the only way to find out) then you should announce that it will require some C++11 feature one release ahead of the change.
I'd give a two release heads up (Announce the change in 1.69, put an compilation warning in 1.70 and then start using the c++11 features in 1.71). Although there was tentatively agreement on the ML that c++03 support should be dropped on a general boost-wide level and that that would also mean that maintainers can drop their individual c++03 support without prior announcement, this has not yet become official policy or widely announced, so I'd tread carefully here. Best Mike