Subject: Re: [boost] [parameter] Go C++11 and above only, or keep C++03 support?
From: Edward Diener (eldiener_at_[hidden])
Date: 2018-11-04 23:27:12
On 11/2/2018 10:17 PM, Cromwell Enage via Boost wrote:
> Hi, everyone.
> The end of section 3.2.1 of the current Boost.Parameter home page tutorial
> notes "that because of the forwarding problem,
> parameter::parameters::operator() can't accept non-const rvalues". I've
> submitted a PR to the develop branch on GitHub that would grant
> Boost.Parameter the ability to support perfect forwarding and eliminate
> this issue. However, the PR uses rvalue references (in parameter::keyword,
> parameter::parameters, and the code generation macros) and variadic
> templates (in parameter::parameters and the code generation macros). With
> the exception of BOOST_PARAMETER_TEMPLATE_KEYWORD, the PR would make
> Boost.Parameter a C++11 library. As a result--based on <
> following Boost libraries known to use Boost.Parameter would also become
> Boost.MetaStateMachine or Boost.MSM
> I'd like to hear from everyone else, especially the maintainers and users
> of these libraries, if it's okay for Boost.Parameter to go C++11 and above
> only or if C++03 support is still necessary.
I am really surprised that after he discussion and general agreement
that Boost would be dropping support for C++03 that there would still be
objections for a Boost library going from C++03 to C++11, as Parameter
wishes to do under the guidance of Cromwell Enage. Was not the
discussion about dropping support for C++03 a pretty clear indication
that retaining backward compatibility for C++03, in a library going to
C++11, should no longer be desired ?
At some point retaining backward compatibility for old C++ standards and
old compiler implementations becomes a liability for a library and I see
nothing wrong with that library moving toward more modern C++. If some
other library, with a dependency on Parameter and still supporting
C++03, is considered there are three possibilities:
1) Change code so that Parameter is no longer a dependency
2) Change code so that only Parameter header files which do not contain
any C++11 constructs are included.
3) Become a C++11 library, meaning that C++03 is no longer supported.
Given our discussion of Boost dropping support for C++03 the worst case
scenario of item 3) can never be wrong.
> Cromwell D. Enage