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 < http://pdimov.github.io/boostdep-report/develop/parameter.html#reverse-dependencies>--the following Boost libraries known to use Boost.Parameter would also become C++11:
Boost.Accumulators Boost.Convert Boost.Graph Boost.Heap Boost.Log Boost.MetaStateMachine or Boost.MSM Boost.Parameter_Python Boost.Signals2
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