From 00ac706ad8f8de8a937ffddbca0034545cb0fba5 Mon Sep 17 00:00:00 2001 From: CromwellEnage <32967088+CromwellEnage@users.noreply.github.com> Date: Wed, 7 Nov 2018 10:30:26 -0500 Subject: [PATCH] Reinstate C++03 workarounds Resolve merge conflicts arising from merging PR#23 into boostorg:develop. --- .travis.yml | 160 +- appveyor.yml | 19 +- doc/html/index.html | 120 +- doc/html/reference.html | 1152 ++++++++++- doc/index.rst | 117 +- doc/reference.rst | 745 ++++++- include/boost/parameter.hpp | 3 + include/boost/parameter/aux_/arg_list.hpp | 420 +++- include/boost/parameter/aux_/as_lvalue.hpp | 25 + include/boost/parameter/aux_/default.hpp | 10 +- .../parameter/aux_/is_tagged_argument.hpp | 37 + .../parameter/aux_/pack/make_arg_list.hpp | 3 +- .../aux_/pack/tag_keyword_arg_ref.hpp | 61 + .../parameter/aux_/pp_impl/argument_pack.hpp | 44 +- .../boost/parameter/aux_/pp_impl/match.hpp | 31 + .../aux_/pp_impl/unwrap_predicate.hpp | 3 +- .../aux_/preprocessor/binary_seq_for_each.hpp | 1638 +++++++++++++++ .../preprocessor/binary_seq_for_each_inc.hpp | 1796 ++++++++++++++++ .../aux_/preprocessor/binary_seq_to_args.hpp | 65 + .../aux_/preprocessor/convert_binary_seq.hpp | 57 + .../parameter/aux_/preprocessor/for_each.hpp | 105 +- .../aux_/preprocessor/for_each_pred.hpp | 1029 ++++++++++ .../aux_/preprocessor/impl/flatten.hpp | 201 +- .../aux_/preprocessor/impl/for_each.hpp | 152 ++ .../impl/forwarding_overloads.hpp | 254 ++- .../aux_/preprocessor/impl/function_cast.hpp | 281 ++- .../impl/function_dispatch_layer.hpp | 61 +- .../impl/function_forward_match.hpp | 14 +- .../aux_/preprocessor/inc_binary_seq.hpp | 78 + .../parameter/aux_/preprocessor/is_binary.hpp | 1 + .../aux_/preprocessor/is_nullary.hpp | 1 + .../no_perfect_forwarding_begin.hpp | 165 ++ .../no_perfect_forwarding_end.hpp | 24 + .../parameter/aux_/preprocessor/overloads.hpp | 92 + .../parameter/aux_/preprocessor/seq_enum.hpp | 26 + .../parameter/aux_/preprocessor/seq_merge.hpp | 1807 +++++++++++++++++ include/boost/parameter/aux_/set.hpp | 113 +- include/boost/parameter/aux_/tag.hpp | 67 +- .../boost/parameter/aux_/tagged_argument.hpp | 410 ++-- .../parameter/aux_/tagged_argument_fwd.hpp | 8 + .../boost/parameter/aux_/template_keyword.hpp | 31 +- .../parameter/aux_/unwrap_cv_reference.hpp | 2 +- include/boost/parameter/config.hpp | 43 +- include/boost/parameter/keyword.hpp | 208 +- include/boost/parameter/macros.hpp | 97 + include/boost/parameter/match.hpp | 73 +- include/boost/parameter/parameters.hpp | 319 +++ include/boost/parameter/preprocessor.hpp | 23 +- test/Jamfile.v2 | 424 +++- test/basics.cpp | 22 +- test/basics.hpp | 6 + test/compose.cpp | 37 +- test/deduced.hpp | 20 + test/earwicker.cpp | 7 + test/evaluate_category.cpp | 51 + test/evaluate_category.hpp | 10 +- test/evaluate_category_10.cpp | 66 + test/evaluate_category_16.cpp | 54 + test/literate/extracting-parameter-types0.cpp | 19 + test/macros_eval_category.cpp | 61 + test/normalized_argument_types.cpp | 7 + test/ntp.cpp | 5 + test/optional_deduced_sfinae.cpp | 1 - test/preprocessor.cpp | 22 +- test/preprocessor_deduced.cpp | 13 +- test/preprocessor_eval_cat_8.cpp | 35 +- test/preprocessor_eval_category.cpp | 107 +- test/sfinae.cpp | 19 +- 68 files changed, 12286 insertions(+), 891 deletions(-) create mode 100755 include/boost/parameter/aux_/as_lvalue.hpp create mode 100755 include/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp create mode 100755 include/boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp create mode 100755 include/boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp create mode 100755 include/boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp create mode 100755 include/boost/parameter/aux_/preprocessor/convert_binary_seq.hpp mode change 100644 => 100755 include/boost/parameter/aux_/preprocessor/for_each.hpp create mode 100755 include/boost/parameter/aux_/preprocessor/for_each_pred.hpp create mode 100755 include/boost/parameter/aux_/preprocessor/impl/for_each.hpp create mode 100755 include/boost/parameter/aux_/preprocessor/inc_binary_seq.hpp create mode 100755 include/boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp create mode 100755 include/boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp create mode 100755 include/boost/parameter/aux_/preprocessor/overloads.hpp create mode 100755 include/boost/parameter/aux_/preprocessor/seq_enum.hpp create mode 100755 include/boost/parameter/aux_/preprocessor/seq_merge.hpp mode change 100644 => 100755 include/boost/parameter/aux_/set.hpp mode change 100644 => 100755 include/boost/parameter/aux_/unwrap_cv_reference.hpp mode change 100644 => 100755 include/boost/parameter/match.hpp mode change 100644 => 100755 include/boost/parameter/preprocessor.hpp mode change 100644 => 100755 test/basics.cpp mode change 100644 => 100755 test/basics.hpp mode change 100644 => 100755 test/compose.cpp mode change 100644 => 100755 test/deduced.hpp mode change 100644 => 100755 test/earwicker.cpp mode change 100644 => 100755 test/literate/extracting-parameter-types0.cpp mode change 100644 => 100755 test/normalized_argument_types.cpp mode change 100644 => 100755 test/ntp.cpp mode change 100644 => 100755 test/optional_deduced_sfinae.cpp mode change 100644 => 100755 test/preprocessor.cpp mode change 100644 => 100755 test/preprocessor_deduced.cpp mode change 100644 => 100755 test/sfinae.cpp diff --git a/.travis.yml b/.travis.yml index d38d999..d6cc3b9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,7 +27,45 @@ matrix: include: - os: linux - env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=11 TEST_SUITE=parameter_all_tests + compiler: g++-4.4 + env: TOOLSET=gcc COMPILER=g++-4.4 CXXSTD=98,0x TEST_SUITE=parameter_all_tests + addons: + apt: + packages: + - g++-4.4 + sources: + - ubuntu-toolchain-r-test + + - os: linux + compiler: g++-4.6 + env: TOOLSET=gcc COMPILER=g++-4.6 CXXSTD=03,0x TEST_SUITE=parameter_all_tests + addons: + apt: + packages: + - g++-4.6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=03,11 TEST_SUITE=parameter_all_tests + addons: + apt: + packages: + - g++-4.7 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=03,11 TEST_SUITE=parameter_all_tests_except_preproc_eval_cat_8 + addons: + apt: + packages: + - g++-4.8 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=03,11 TEST_SUITE=parameter_all_tests_except_preproc_eval_cat_8 addons: apt: packages: @@ -36,7 +74,7 @@ matrix: - ubuntu-toolchain-r-test - os: linux - env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=11,14 TEST_SUITE=parameter_all_tests + env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14 TEST_SUITE=parameter_all_tests addons: apt: packages: @@ -44,6 +82,15 @@ matrix: sources: - ubuntu-toolchain-r-test + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03 TEST_SUITE=parameter_all_tests_except_preproc_eval_cat_8 + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + - os: linux env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=11,14,1z TEST_SUITE=parameter_all_tests addons: @@ -53,6 +100,15 @@ matrix: sources: - ubuntu-toolchain-r-test + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03 CXXSTD_DIALECT=cxxstd-dialect=gnu TEST_SUITE=parameter_all_tests_except_preproc_eval_cat_8 + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + - os: linux env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=11,14,1z CXXSTD_DIALECT=cxxstd-dialect=gnu TEST_SUITE=parameter_all_tests addons: @@ -62,6 +118,17 @@ matrix: sources: - ubuntu-toolchain-r-test + - os: linux + dist: trusty + compiler: g++-7 + env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=03 TEST_SUITE=parameter_all_tests_except_preproc_eval_cat_8 + addons: + apt: + packages: + - g++-7 + sources: + - ubuntu-toolchain-r-test + - os: linux dist: trusty compiler: g++-7 @@ -73,6 +140,17 @@ matrix: sources: - ubuntu-toolchain-r-test + - os: linux + dist: trusty + compiler: g++-7 + env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=03 CXXSTD_DIALECT=cxxstd-dialect=gnu TEST_SUITE=parameter_all_tests_except_preproc_eval_cat_8 + addons: + apt: + packages: + - g++-7 + sources: + - ubuntu-toolchain-r-test + - os: linux dist: trusty compiler: g++-7 @@ -84,6 +162,16 @@ matrix: sources: - ubuntu-toolchain-r-test + - os: linux + compiler: g++-8 + env: TOOLSET=gcc COMPILER=g++-8 CXXSTD=03 TEST_SUITE=parameter_all_tests_except_preproc_eval_cat_8 + addons: + apt: + packages: + - g++-8 + sources: + - ubuntu-toolchain-r-test + - os: linux compiler: g++-8 env: TOOLSET=gcc COMPILER=g++-8 CXXSTD=11,14,17 TEST_SUITE=parameter_all_tests @@ -95,7 +183,7 @@ matrix: - ubuntu-toolchain-r-test - os: linux - env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=11 TEST_SUITE=parameter_all_tests + env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11 TEST_SUITE=parameter_all_tests addons: apt: packages: @@ -105,7 +193,7 @@ matrix: - llvm-toolchain-precise-3.5 - os: linux - env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=11 TEST_SUITE=parameter_all_tests + env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11 TEST_SUITE=parameter_all_tests addons: apt: packages: @@ -115,7 +203,7 @@ matrix: - llvm-toolchain-precise-3.6 - os: linux - env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=11 TEST_SUITE=parameter_all_tests + env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11 TEST_SUITE=parameter_all_tests addons: apt: packages: @@ -124,6 +212,16 @@ matrix: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.7 + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03 TEST_SUITE=parameter_all_tests_cxx03 + addons: + apt: + packages: + - clang-3.8 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.8 + - os: linux env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=11 TEST_SUITE=parameter_all_tests addons: @@ -144,6 +242,16 @@ matrix: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.8 + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03 TEST_SUITE=parameter_all_tests_cxx03 + addons: + apt: + packages: + - clang-3.9 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.9 + - os: linux env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=11 TEST_SUITE=parameter_all_tests addons: @@ -164,6 +272,17 @@ matrix: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.9 + - os: linux + compiler: clang++-4.0 + env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=03 TEST_SUITE=parameter_all_tests_cxx03 + addons: + apt: + packages: + - clang-4.0 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-trusty-4.0 + - os: linux compiler: clang++-4.0 env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=11 TEST_SUITE=parameter_all_tests @@ -186,6 +305,17 @@ matrix: - ubuntu-toolchain-r-test - llvm-toolchain-trusty-4.0 + - os: linux + compiler: clang++-5.0 + env: TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=03 TEST_SUITE=parameter_all_tests_cxx03 + addons: + apt: + packages: + - clang-5.0 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-trusty-5.0 + - os: linux compiler: clang++-5.0 env: TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=11 TEST_SUITE=parameter_all_tests @@ -208,6 +338,16 @@ matrix: - ubuntu-toolchain-r-test - llvm-toolchain-trusty-5.0 + - os: linux + compiler: clang++ + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03 TEST_SUITE=parameter_all_tests_cxx03 + addons: + apt: + packages: + - libstdc++-5-dev + sources: + - ubuntu-toolchain-r-test + - os: linux compiler: clang++ env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z TEST_SUITE=parameter_all_tests @@ -220,7 +360,7 @@ matrix: - os: linux compiler: clang++-libc++ - env: TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=11,14,1z TEST_SUITE=parameter_all_tests + env: TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=03,11,14,1z TEST_SUITE=parameter_all_tests addons: apt: packages: @@ -228,14 +368,18 @@ matrix: - os: osx compiler: clang++ - env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z TEST_SUITE=parameter_all_tests + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z TEST_SUITE=parameter_all_tests + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03 TEST_SUITE=parameter_slp_tests + osx_image: xcode7.3 - os: osx env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z TEST_SUITE=parameter_all_tests osx_image: xcode7.3 - os: osx - env: TOOLSET=clang COMPILER=clang++ CXXSTD=11,14,1z TEST_SUITE=parameter_all_but_python_tests + env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z TEST_SUITE=parameter_all_but_python_tests osx_image: xcode8.3 install: diff --git a/appveyor.yml b/appveyor.yml index 6bea0af..e9f9f6b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,12 +15,27 @@ branches: environment: matrix: + - ARGS: --toolset=gcc address-model=32 + TEST_SUITE: parameter_slp_tests + PATH: C:\mingw-w64\i686-5.3.0-posix-dwarf-rt_v4-rev0\mingw32\bin;%PATH% + - ARGS: --toolset=gcc address-model=32 linkflags=-Wl,-allow-multiple-definition + TEST_SUITE: parameter_slp_tests + PATH: C:\MinGW\bin;%PATH% - ARGS: --toolset=gcc address-model=64 - TEST_SUITE: parameter_all_but_python_tests + TEST_SUITE: parameter_sl_tests PATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH% - ARGS: --toolset=gcc address-model=64 cxxflags=-std=gnu++1z - TEST_SUITE: parameter_all_but_python_tests + TEST_SUITE: parameter_sl_tests PATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH% + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013 + ARGS: --toolset=msvc-9.0 address-model=32 + TEST_SUITE: parameter_all_tests + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013 + ARGS: --toolset=msvc-10.0 address-model=32 + TEST_SUITE: parameter_all_tests + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013 + ARGS: --toolset=msvc-11.0 address-model=32 + TEST_SUITE: parameter_msvc11_tests - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2013 ARGS: --toolset=msvc-12.0 address-model=32 TEST_SUITE: parameter_msvc_tests diff --git a/doc/html/index.html b/doc/html/index.html index bd23d51..d2cba52 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -184,19 +184,27 @@ id="id38">4.3   Documentation
  • 5   Portability Considerations
  • 6   Python Binding
  • +id="id44">6   Python Binding
  • 7   Reference
  • +id="id45">7   Reference
  • 8   Glossary
  • +id="id46">8   Glossary
  • 9   Acknowledgements
  • +id="id47">9   Acknowledgements
    @@ -760,8 +768,11 @@ corresponding names in consume(…) or violate their category constraints, attempt to compile the test/compose.cpp test program with either the -LIBS_PARAMETER_TEST_COMPILE_FAILURE_0 macro -or the LIBS_PARAMETER_TEST_COMPILE_FAILURE_1 +LIBS_PARAMETER_TEST_COMPILE_FAILURE_0 macro, +the LIBS_PARAMETER_TEST_COMPILE_FAILURE_1 +macro, the +LIBS_PARAMETER_TEST_COMPILE_FAILURE_2 macro, +or the LIBS_PARAMETER_TEST_COMPILE_FAILURE_3 macro #defined. You should encounter a compiler error caused by a specific constraint violation.

    @@ -2531,8 +2542,46 @@ href="http://www.boost.org/regression/release/user/parameter.html">regression test results for the latest Boost release of the Parameter library to see how it fares on your favorite compiler. Additionally, you may need to be aware of the following issues and workarounds for particular compilers.

    +
    +

    5.1   Perfect +Forwarding Support

    +

    If your compiler supports perfect forwarding, then the Parameter library will +#define the macro +BOOST_PARAMETER_HAS_PERFECT_FORWARDING +unless you disable it manually. If your compiler does not provide this +support, then parameter::parameters::operator() will treat rvalue references as lvalue +const references to work around the forwarding problem, so in certain cases you must wrap +boost::ref or +std::ref around any arguments that will +be bound to out parameters. The test/evaluate_category.cpp and +test/preprocessor_eval_category.cpp test programs demonstrate this +support.

    +
    +
    +

    5.2   No SFINAE +Support

    +

    Some older compilers don't support SFINAE. If your compiler meets +that criterion, then Boost headers will +#define the preprocessor symbol +BOOST_NO_SFINAE, and parameter-enabled +functions won't be removed from the overload set based on their +signatures.

    +
    -

    5.1   No Support +

    5.3   No Support for result_of

    @@ -2579,9 +2628,29 @@ are unspecified, the workaround is to use .. |BOOST_PARAMETER_MATCH| replace:: ``BOOST_PARAMETER_MATCH`` -->

    +
    +

    5.3   Compiler Can't +See References In Unnamed Namespace

    +

    If you use Microsoft Visual C++ 6.x, you may find that the compiler has +trouble finding your keyword objects. This problem has been observed, but +only on this one compiler, and it disappeared as the test code evolved, so we +suggest you use it only as a last resort rather than as a preventative +measure. The solution is to add using-declarations to force the +names to be available in the enclosing namespace without qualification:

    +
    +namespace graphs {
    +
    +    using graphs::graph;
    +    using graphs::visitor;
    +    using graphs::root_vertex;
    +    using graphs::index_map;
    +    using graphs::color_map;
    +}
    +
    +
    -

    6   Python +

    6   Python Binding

    Follow this link for @@ -2590,12 +2659,12 @@ with Boost.Python.

    -

    7   Reference

    +

    7   Reference

    Follow this link to the Boost.Parameter reference documentation.

    -

    8   Glossary

    +

    8   Glossary

    @@ -2636,7 +2705,7 @@ int y = f(3);
    -

    9   Acknowledgements

    The authors would like to thank all the Boosters who participated in the review of this library and its documentation, most especially our review @@ -2721,6 +2790,33 @@ to Herb Sutter.

    + + + + + + + + +
    [7]This capability depends on your compiler's support for +SFINAE. SFINAE: Substitution +Failure Is Not +An Error. If type substitution during the +instantiation of a function template results in an invalid type, no +compilation error is emitted; instead the overload is removed from the +overload set. By producing an invalid type in the function signature +depending on the result of some condition, we can decide whether or not an +overload is considered during overload resolution. The technique is +formalized in the enable_if utility. Most recent compilers support SFINAE; on +compilers that don't support it, the Boost config library will +#define the symbol +BOOST_NO_SFINAE. See +http://www.semantics.org/once_weakly/w02_SFINAE.pdf for more information +on SFINAE.

    @@ -223,6 +231,9 @@ code block.

    In a specification of the tokens generated by a macro, bold type is used to highlight the position of the expanded macro argument in the result.

    +

    The special character β represents the value of +BOOST_PARAMETER_MAX_ARITY.


    @@ -497,6 +508,10 @@ class="reference external" href="../../../../boost/parameter/keyword.hpp" +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is +#defined, then:

     template <typename Tag>
     struct keyword
    @@ -508,8 +523,8 @@ class="docutils literal">enable_if<
             typename boost::mpl::eval_if<
    -            std::is_scalar<T>
               , boost::mpl::true_
               , boost::mpl::eval_if<
    -                std::is_same<
                         typename Tag::qualifier
                       , boost::parameter::in_reference
    @@ -529,8 +544,8 @@ class="docutils literal">true_
                   , boost::mpl::if_<
    -                    std::is_same<
                             typename Tag::qualifier
                           , boost::parameter::forward_reference
    @@ -560,8 +575,8 @@ class="docutils literal">eval_if<
                 typename boost::mpl::eval_if<
    -                std::is_same<
                         typename Tag::qualifier
                       , boost::parameter::out_reference
    @@ -572,8 +587,8 @@ class="docutils literal">true_
                   , boost::mpl::if_<
    -                    std::is_same<
                             typename Tag::qualifier
                           , boost::parameter::forward_reference
    @@ -589,8 +604,8 @@ class="docutils literal">false_
               , boost::mpl::if_<
    -                std::is_const<T>
                   , boost::mpl::enable_if<
             typename boost::mpl::eval_if<
    -            std::is_scalar<T>
               , boost::mpl::false_
               , boost::mpl::eval_if<
    -                std::is_same<
                         typename Tag::qualifier
                       , boost::parameter::in_reference
    @@ -637,8 +652,8 @@ class="docutils literal">true_
                   , boost::mpl::if_<
    -                    std::is_same<
                             typename Tag::qualifier
                           , boost::parameter::forward_reference
    @@ -665,8 +680,8 @@ class="docutils literal">enable_if<
             typename boost::mpl::eval_if<
    -            std::is_scalar<T>
               , boost::mpl::false_
               , boost::mpl::eval_if<
    -                std::is_same<
                         typename Tag::qualifier
                       , boost::parameter::consume_reference
    @@ -686,8 +701,8 @@ class="docutils literal">true_
                   , boost::mpl::if_<
    -                    std::is_same<
                             typename Tag::qualifier
                           , boost::parameter::forward_reference
    @@ -714,8 +729,8 @@ class="docutils literal">enable_if<
             typename boost::mpl::eval_if<
    -            std::is_scalar<T>
               , boost::mpl::true_
               , boost::mpl::eval_if<
    -                std::is_same<
                         typename Tag::qualifier
                       , boost::parameter::in_reference
    @@ -735,8 +750,8 @@ class="docutils literal">true_
                   , boost::mpl::if_<
    -                    std::is_same<
                             typename Tag::qualifier
                           , boost::parameter::forward_reference
    @@ -765,8 +780,8 @@ class="docutils literal">eval_if<
                 typename boost::mpl::eval_if<
    -                std::is_same<
                         typename Tag::qualifier
                       , boost::parameter::out_reference
    @@ -777,8 +792,8 @@ class="docutils literal">true_
                   , boost::mpl::if_<
    -                    std::is_same<
                             typename Tag::qualifier
                           , boost::parameter::forward_reference
    @@ -794,8 +809,8 @@ class="docutils literal">false_
               , boost::mpl::if_<
    -                std::is_const<T>
                   , boost::mpl::enable_if<
             typename boost::mpl::eval_if<
    -            std::is_scalar<T>
               , boost::mpl::false_
               , boost::mpl::eval_if<
    -                std::is_same<
                         typename Tag::qualifier
                       , boost::parameter::in_reference
    @@ -841,8 +856,8 @@ class="docutils literal">true_
                   , boost::mpl::if_<
    -                    std::is_same<
                             typename Tag::qualifier
                           , boost::parameter::forward_reference
    @@ -868,8 +883,8 @@ class="docutils literal">enable_if<
             typename boost::mpl::eval_if<
    -            std::is_scalar<T>
               , boost::mpl::false_
               , boost::mpl::eval_if<
    -                std::is_same<
                         typename Tag::qualifier
                       , boost::parameter::consume_reference
    @@ -889,8 +904,8 @@ class="docutils literal">true_
                   , boost::mpl::if_<
    -                    std::is_same<
                             typename Tag::qualifier
                           , boost::parameter::forward_reference
    @@ -924,6 +939,244 @@ href="#instance">instance;
     href="#get">get();
     };
     
    +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is not +#defined, then:

    +
    +template <typename Tag>
    +struct keyword
    +{
    +    template <typename T>
    +    typename boost::enable_if<
    +        typename boost::mpl::eval_if<
    +            boost::is_scalar<T>
    +          , boost::mpl::true_
    +          , boost::mpl::eval_if<
    +                boost::is_same<
    +                    typename Tag::qualifier
    +                  , boost::parameter::in_reference
    +                >
    +              , boost::mpl::true_
    +              , boost::mpl::if_<
    +                    boost::is_same<
    +                        typename Tag::qualifier
    +                      , boost::parameter::forward_reference
    +                    >
    +                  , boost::mpl::true_
    +                  , boost::mpl::false_
    +                >
    +            >
    +        >::type
    +      , ArgumentPack
    +    >::type constexpr
    +        operator=(T const& value) const;
    +
    +    template <typename T>
    +    typename boost::enable_if<
    +        typename boost::mpl::eval_if<
    +            typename boost::mpl::eval_if<
    +                boost::is_same<
    +                    typename Tag::qualifier
    +                  , boost::parameter::out_reference
    +                >
    +              , boost::mpl::true_
    +              , boost::mpl::if_<
    +                    boost::is_same<
    +                        typename Tag::qualifier
    +                      , boost::parameter::forward_reference
    +                    >
    +                  , boost::mpl::true_
    +                  , boost::mpl::false_
    +                >
    +            >
    +          , boost::mpl::if_<
    +                boost::is_const<T>
    +              , boost::mpl::false_
    +              , boost::mpl::true_
    +            >
    +          , boost::mpl::false_
    +        >::type
    +      , ArgumentPack
    +    >::type constexpr
    +        operator=(T& value) const;
    +
    +    template <typename T>
    +    typename boost::enable_if<
    +        typename boost::mpl::eval_if<
    +            boost::is_scalar<T>
    +          , boost::mpl::true_
    +          , boost::mpl::eval_if<
    +                boost::is_same<
    +                    typename Tag::qualifier
    +                  , boost::parameter::in_reference
    +                >
    +              , boost::mpl::true_
    +              , boost::mpl::if_<
    +                    boost::is_same<
    +                        typename Tag::qualifier
    +                      , boost::parameter::forward_reference
    +                    >
    +                  , boost::mpl::true_
    +                  , boost::mpl::false_
    +                >
    +            >
    +        >::type
    +      , tagged default
    +    >::type constexpr
    +        operator|(T const& x) const;
    +
    +    template <typename T>
    +    typename boost::enable_if<
    +        typename boost::mpl::eval_if<
    +            typename boost::mpl::eval_if<
    +                boost::is_same<
    +                    typename Tag::qualifier
    +                  , boost::parameter::out_reference
    +                >
    +              , boost::mpl::true_
    +              , boost::mpl::if_<
    +                    boost::is_same<
    +                        typename Tag::qualifier
    +                      , boost::parameter::forward_reference
    +                    >
    +                  , boost::mpl::true_
    +                  , boost::mpl::false_
    +                >
    +            >
    +          , boost::mpl::if_<
    +                boost::is_const<T>
    +              , boost::mpl::false_
    +              , boost::mpl::true_
    +            >
    +          , boost::mpl::false_
    +        >::type
    +      , tagged default
    +    >::type constexpr
    +        operator|(T& x) const;
    +
    +    template <typename F>
    +    tagged lazy default operator||(F const&) const;
    +
    +    template <typename F>
    +    tagged lazy default operator||(F&) const;
    +
    +    static keyword<Tag> const& instance;
    +
    +    static keyword<Tag>& get();
    +};
    +
    operator=
    @@ -934,6 +1187,12 @@ template <typename T> ArgumentPack operator=(T& value) const; + +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is +#defined, then:

    +
     template <typename T> ArgumentPack operator=(T const&& value) const;
    @@ -998,6 +1257,12 @@ template <typename T> tagged default operator|(T const& x) const;
     template <typename T> tagged default operator|(T& x) const;
    +
    +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is +#defined, then:

    +
     template <typename T> tagged default operator|(T const&& x) const;
     template <typename T> 
     
     static keyword<Tag>& get();
     
    +
    +

    Deprecated

    +

    This macro has been deprecated in favor of +instance.

    +
    @@ -1155,6 +1425,10 @@ href="../../../../boost/parameter/parameters.hpp"
    +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is +#defined, then:

     template <typename ...PSpec>
     struct parameters
    @@ -1239,6 +1513,119 @@ href="#keyword-tag-type">keyword tag type.
     
     
     
    +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is not +#defined, then:

    +
    +template <
    +    typename P0 = unspecified
    +  , typename P1 = unspecified
    +  , …
    +  , typename P ## β = unspecified
    +>
    +struct parameters
    +{
    +    template <
    +        typename A0
    +      , typename A1 = unspecified
    +      , …
    +      , typename A ## β = unspecified
    +    >
    +    struct match
    +    {
    +        typedef … type;
    +    };
    +
    +    template <typename A0>
    +    ArgumentPack operator()(A0& a0) const;
    +
    +    template <typename A0, typename A1>
    +    ArgumentPack operator()(A0& a0, A1& a1) const;
    +
    +    
    +
    +    template <typename A0, typename A1, …, typename A ## β>
    +    ArgumentPack
    +    operator()(A0& a0, A1& a1, …, A ## β & a ## β) const;
    +};
    +
    + +++ + + + + + +
    Requires:P0, +P1, …, P +## β are models of ParameterSpec.
    +
    +

    Note

    +

    In this section, R ## i and +K ## i are defined as follows: for +any argument type A ## i:

    +
    +
    +
    let D0 the set [d0, …, d +## j] of all deduced parameter specs in +[P0, …, P +## β]
    +
    R ## i is the +intended argument +type of A ## i
    +

    +
    if A ## i is a +result type of keyword<T>::operator=
    +
    then
    +
    +
    K ## i is +T
    +
    +
    else
    +
    +
    if some A ## j +where ji is a result type of keyword<T>::operator=
    +
    or some P ## +j in ji is deduced
    +
    then
    +
    +
    if some parameter spec dj in D ## i matches +Ai
    +
    then
    +
    +
    K ## i is d ## j's keyword tag type.
    +
    Di+1 is +D ## i - +[d ## j]
    +
    +
    +
    else
    +
    +
    K ## i is P ## i's keyword tag type.
    +
    +
    +
    +
    +
    match
    @@ -1247,6 +1634,10 @@ href="../../../mpl/doc/refmanual/metafunction.html">Metafunction used to remove a forwarding function from overload resolution.

    +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is +#defined, then:

    @@ -1296,16 +1687,87 @@ default +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is not +#defined, then:

    +
    +++ + + + + + +
    Returns:if P0, P1, …, are +satisfied (see below), then parameters<P0,P1,…,Pβ>. Otherwise, +match<A0,A1,…,Aβ>::type is not defined.
    +

    P0, P1, +…, are satisfied if, for +every j in 0…β, either:

    +
      +
    • P ## j is the +unspecified default
    • +
    • or, P ## j is +a keyword tag type
    • +
    • or, P ## j is +optional<X,F> and either +
        +
      • X is not K ## i for any i,
      • +
      • or X is some +K ## i and +mpl::apply<F,R +## i>::type::value is true
      • +
      +
    • +
    • or, P ## j is +required<X,F>, and +
        +
      • X is some K ## i, and
      • +
      • mpl::apply<F,R ## i>::type::value is +true
      • +
      +
    • +
    operator()
    +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is +#defined, then:

     template <typename ...Args> ArgumentPack operator()(Args&&... args) const;
     
    +

    Else:

    +
    +template <typename A0> ArgumentPack operator()(A0 const& a0) const;
    +
    +
    +
    +template <typename A0, …, typename A ## β> ArgumentPack operator()(A0 const& a0, …, A ## β const& a ## β) const;
    +
    @@ -1732,6 +2194,10 @@ determined from arguments.
  • m denotes the maximum arity, as determined from arguments.
  • +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is +#defined, then:

     template <typename T>
     struct boost_param_result_ ## __LINE__ ## name
    @@ -1774,8 +2240,8 @@ class="docutils literal">forward<A0>(a0)
               , …
               , std::forward<A ## n>(a ## n)
    +class="docutils literal">forward<A ## n>(a ## n)
             )
         );
     }
    @@ -1802,8 +2268,8 @@ class="docutils literal">forward<A0>(a0)
               , …
               , std::forward<A ## m>(a ## m)
    +class="docutils literal">forward<A ## m>(a ## m)
             )
         );
     }
    @@ -1905,15 +2371,15 @@ ResultType
             )
           , std::forward< argument name ## 0 ## _type>(
    +class="docutils literal">forward< argument name ## 0 ## _type>(
                 argument name ## 0
             )
           , …
           , std::forward< argument name ## n ## _type>(
    +class="docutils literal">forward< argument name ## n ## _type>(
                 argument name ## n
             )
           , std::argument name ## m
         )
     
    +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is not +#defined, then:

    +
    +template <typename T>
    +struct boost_param_result_ ## __LINE__ ## name
    +{
    +    typedef result type;
    +};
    +
    +struct boost_param_params_ ## __LINE__ ## name
    +  : boost::parameter::parameters<
    +        list of parameter specifications, based on arguments
    +    >
    +{
    +};
    +
    +typedef boost_param_params_ ## __LINE__ ## name
    +    boost_param_parameters_ ## __LINE__ ## name;
    +
    +template <typename Args>
    +typename boost_param_result_ ## __LINE__ ## name<Args>::type
    +    boost_param_impl ## name(Args const&);
    +
    +template <typename A0, …, typename A ## n>
    +result type
    +    name(
    +        A0 const& a0, …, A ## n const& a ## n
    +      , typename boost_param_parameters_ ## __LINE__ ## name::match<
    +            A0 const, …, A ## n const
    +        >::type = boost_param_parameters_ ## __LINE__ ## name()
    +    )
    +{
    +    return boost_param_impl ## name(
    +        boost_param_parameters_ ## __LINE__ ## name()(
    +            a0, …, a ## n
    +        )
    +    );
    +}
    +
    +… exponential number of overloads …
    +
    +
    +template <typename A0, …, typename A ## n>
    +result type
    +    name(
    +        A0& a0, …, A ## n & a ## n
    +      , typename boost_param_parameters_ ## __LINE__ ## name::match<
    +            A0, …, A ## n
    +        >::type = boost_param_parameters_ ## __LINE__ ## name()
    +    )
    +{
    +    return boost_param_impl ## name(
    +        boost_param_parameters_ ## __LINE__ ## name()(
    +            a0, …, a ## n
    +        )
    +    );
    +}
    +
    +
    +
    +template <typename A0, …, typename A ## m>
    +result type
    +    name(
    +        A0 const& a0, …, A ## m const& ## ; am
    +      , typename boost_param_parameters_ ## __LINE__ ## name::match<
    +            A0 const, …, A ## m const
    +        >::type = boost_param_parameters_ ## __LINE__ ## name()
    +    )
    +{
    +    return boost_param_impl ## name(
    +        boost_param_parameters_ ## __LINE__ ## name()(
    +            a0, …, a ## m
    +        )
    +    );
    +}
    +
    +… exponential number of overloads …
    +
    +
    +template <typename A0, …, typename A ## m>
    +result type
    +    name(
    +        A0& a0, …, A ## m & ## ; am
    +      , typename boost_param_parameters_ ## __LINE__ ## name::match<
    +            A0, …, A ## m
    +        >::type = boost_param_parameters_ ## __LINE__ ## name()
    +    )
    +{
    +    return boost_param_impl ## name(
    +        boost_param_parameters_ ## __LINE__ ## name()(
    +            a0, …, a ## m
    +        )
    +    );
    +}
    +
    +template <
    +    typename ResultType
    +  , typename Args
    +  , typename argument name ## 0 ## _type
    +  , …
    +  , typename argument name ## n ## _type
    +>
    +ResultType
    +    boost_param_dispatch_0boost_ ## __LINE__ ## name(
    +        (ResultType(*)())
    +      , Args const& args
    +      , argument name ## 0 ## _type& argument name ## 0
    +      , …
    +      , argument name ## n ## _type& argument name ## n
    +    );
    +
    +
    +
    +template <
    +    typename ResultType
    +  , typename Args
    +  , typename argument name ## 0 ## _type
    +  , …
    +  , typename argument name ## m ## _type
    +>
    +ResultType
    +    boost_param_dispatch_0boost_ ## __LINE__ ## name(
    +        (ResultType(*)())
    +      , Args const& args
    +      , argument name ## 0 ## _type& argument name ## 0
    +      , …
    +      , argument name ## m ## _type& argument name ## m
    +    );
    +
    +template <typename Args>
    +typename boost_param_result_ ## __LINE__ ## name<Args>::type
    +    boost_param_impl ## name(Args const& args)
    +{
    +    return boost_param_dispatch_0boost_ ## __LINE__ ## name(
    +        static_cast<ResultType(*)()>(std::nullptr)
    +      , args
    +      , args[ keyword object of required parameter ## 0]
    +      , …
    +      , args[ keyword object of required parameter ## n]
    +    );
    +}
    +
    +template <
    +    typename ResultType
    +  , typename Args
    +  , typename argument name ## 0 ## _type
    +  , …
    +  , typename argument name ## n ## _type
    +>
    +ResultType
    +    boost_param_dispatch_0boost_ ## __LINE__ ## name(
    +        (ResultType(*)())
    +      , Args const& args
    +      , argument name ## 0 ## _type& argument name ## 0
    +      , …
    +      , argument name ## n ## _type& argument name ## n
    +    )
    +{
    +    return boost_param_dispatch_0boost_ ## __LINE__ ## name(
    +        static_cast<ResultType(*)()>(std::nullptr)
    +      , (args, keyword object of optional parameter ## n + 1 =
    +            default value of optional parameter ## n + 1
    +        )
    +      , argument name ## 0
    +      , …
    +      , argument name ## n
    +      , default value of optional parameter ## n + 1
    +    );
    +}
    +
    +
    +
    +template <
    +    typename ResultType
    +  , typename Args
    +  , typename argument name ## 0 ## _type
    +  , …
    +  , typename argument name ## m ## _type
    +>
    +ResultType
    +    boost_param_dispatch_0boost_ ## __LINE__ ## name(
    +        (ResultType(*)())
    +      , Args const& args
    +      , argument name ## 0 ## _type& argument name ## 0
    +      , …
    +      , argument name ## m ## _type& argument name ## m
    +    )
    +

    The arguments.

  • m denotes the maximum arity, as determined from arguments.
  • +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is +#defined, then:

     struct boost_param_params_ ## __LINE__ ## ctor
       : boost::parameter::parameters<
    @@ -2188,8 +2873,8 @@ class="docutils literal">forward<A0>(a0)
               , …
               , std::forward<A ## n>(a ## n)
    +class="docutils literal">forward<A ## n>(a ## n)
             )
         )
     {
    @@ -2208,13 +2893,68 @@ class="docutils literal">forward<A0>(a0)
               , …
               , std::forward<A ## m>(a ## m)
    +class="docutils literal">forward<A ## m>(a ## m)
             )
         )
     {
     }
     
    +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is not +#defined, then:

    +
    +struct boost_param_params_ ## __LINE__ ## ctor
    +  : boost::parameter::parameters<
    +        list of parameter specifications, based on arguments
    +    >
    +{
    +};
    +
    +typedef boost_param_params_ ## __LINE__ ## name
    +    constructor_parameters ## __LINE__;
    +
    +template <typename A0, …, typename A ## n>
    +cls(A0 const& a0, …, A ## n const& a ## n)
    +  : impl(constructor_parameters ## __LINE__(a0, …, a ## n))
    +{
    +}
    +
    +… exponential number of overloads …
    +
    +
    +template <typename A0, …, typename A ## n>
    +cls(A0& a0, …, A ## n & a ## n)
    +  : impl(constructor_parameters ## __LINE__(a0, …, a ## n))
    +{
    +}
    +
    +
    +
    +template <typename A0, …, typename A ## m>
    +cls(A0 const& a0, …, A ## m const& a ## m)
    +  : impl(constructor_parameters ## __LINE__(a0, …, a ## m))
    +{
    +}
    +
    +… exponential number of overloads …
    +
    +
    +template <typename A0, …, typename A ## m>
    +cls(A0& a0, …, A ## m & a ## m)
    +  : impl(constructor_parameters ## __LINE__(a0, …, a ## m))
    +{
    +}
    +

    The l < h

    +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is +#defined, then:

    Expands to:
    @@ -2540,8 +3284,8 @@ class="docutils literal">forward<A2>(a2) , … , std::forward<A ## l>(a ## l) +class="docutils literal">forward<A ## l>(a ## l) ) ); } @@ -2580,8 +3324,8 @@ class="docutils literal">forward<A2>(a2) , … , std::forward<A ## l>(a ## l) +class="docutils literal">forward<A ## l>(a ## l) , std::forward<A ## forward<A2>(a2) , … , std::forward<A ## h>(a ## h) +class="docutils literal">forward<A ## h>(a ## h) ) ); }
    +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is not +#defined, then:

    +
    +
    Expands to:
    +
    +
    +template <typename A1, typename A2, …, typename A ## l>
    +r
    +    name(
    +        A1 const& a1, A2 const& a2, …, A ## l const& a ## l
    +      , typename p::match<A1, A2, …, A ## l>::type pk = p()
    +    )
    +{
    +    return name_with_named_params(pk(a1, a2, …, a ## l));
    +}
    +
    +… exponential number of overloads …
    +
    +
    +template <typename A1, typename A2, …, typename A ## l>
    +r
    +    name(
    +        A1& a1, A2& a2, …, A ## l & a ## l
    +      , typename p::match<A1, A2, …, A ## l>::type pk = p()
    +    )
    +{
    +    return name_with_named_params(pk(a1, a2, …, a ## l));
    +}
    +
    +template <
    +    typename A1
    +  , typename A2
    +  , …
    +  , typename A ## l
    +  , typename A ## BOOST_PP_INC(l)
    +>
    +r
    +    name(
    +        A1 const& a1, A2 const& a2, …, A ## l const& a ## l
    +      , A ## BOOST_PP_INC(l) const& a ## BOOST_PP_INC(l)
    +      , typename p::match<A1, A2, …, Al, A ## BOOST_PP_INC(l)>::type pk = p()
    +    )
    +{
    +    return name_with_named_params(
    +        pk(a1, a2, …, a ## l, a ## BOOST_PP_INC(l))
    +    );
    +}
    +
    +… exponential number of overloads …
    +
    +
    +template <
    +    typename A1
    +  , typename A2
    +  , …
    +  , typename A ## l
    +  , typename A ## BOOST_PP_INC(l)
    +>
    +r
    +    name(
    +        A1& a1, A2& a2, …, A ## l & a ## l
    +      , A ## BOOST_PP_INC(l) & a ## BOOST_PP_INC(l)
    +      , typename p::match<A1, A2, …, Al, A ## BOOST_PP_INC(l)>::type pk = p()
    +    )
    +{
    +    return name_with_named_params(
    +        pk(a1, a2, …, a ## l, a ## BOOST_PP_INC(l))
    +    );
    +}
    +
    +
    +
    +template <typename A1, typename A2, …, typename A ## h>
    +r
    +    name(
    +        A1 const& a1, A2 const& a2, …, A ## h const& a ## h
    +      , typename p::match<A1, A2, …, A ## h>::type pk = p()
    +    )
    +{
    +    return name_with_named_params(pk(a1, a2, …, a ## h));
    +}
    +
    +… exponential number of overloads …
    +
    +
    +template <typename A1, typename A2, …, typename A ## h>
    +r
    +    name(
    +        A1& a1, A2& a2, …, A ## h& a ## h
    +      , typename p::match<A1, A2, …, A ## h>::type pk = p()
    +    )
    +{
    +    return name_with_named_params(pk(a1, a2, …, a ## h));
    +}
    +
    +
    +

    The test/macros.cpp and test/macros_eval_category.cpp @@ -2727,10 +3606,49 @@ href="../../../../boost/parameter/match.hpp"

    7   Configuration Macros

    -
    +

    7.1   BOOST_PARAMETER_HAS_PERFECT_FORWARDING

    +

    Determines whether or not the library supports perfect forwarding, or the +preservation of parameter value categories. Users can manually disable this +macro by #defining the +BOOST_PARAMETER_DISABLE_PERFECT_FORWARDING +macro. Otherwise, the library will +#define this macro if and only if it and +the configuration macros BOOST_NO_FUNCTION_TEMPLATE_ORDERING +and BOOST_NO_SFINAE are not already +#defined but the configuration macros +BOOST_MOVE_PERFECT_FORWARDING and +BOOST_FUSION_VARIADIC_MPL_SEQUENCE are +already #defined.

    + +++ + + + + + +
    Defined in:boost/parameter/config.hpp
    +
    +
    +

    7.2   BOOST_PARAMETER_VARIADIC_MPL_SEQUENCE

    -

    Determines the If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is +#defined, then determines the +MPL Variadic Sequence underlying the nested parameter_spec type of ::boost::fusion::list if BOOST_FUSION_HAS_VARIADIC_LIST is defined, -BOOST_FUSION_HAS_VARIADIC_LIST is +defined, ::boost::fusion::deque if BOOST_FUSION_HAS_VARIADIC_DEQUE is defined, or -BOOST_FUSION_HAS_VARIADIC_DEQUE is +defined, or ::boost::mpl::vector otherwise.

    @@ -2776,10 +3694,15 @@ href="../../../../boost/parameter/parameters.hpp"
    -

    7.2   7.3   BOOST_PARAMETER_MAX_ARITY

    -

    Determines the maximum number of arguments supported by the library. If -the Determines the maximum number of arguments supported by the library.

    +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is +#defined, then:

    + +

    If BOOST_PARAMETER_HAS_PERFECT_FORWARDING is not +#defined, then:

    + @@ -2818,14 +3759,61 @@ href="../../../../boost/parameter/config.hpp" +>BOOST_MPL_LIMIT_VECTOR_SIZE if perfect +forwarding is supported, 8 otherwise. + + + + + + +
    Default Value: BOOST_MPL_LIMIT_VECTOR_SIZE
    Minimum Value:2
    +
    +

    7.4   BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY

    +

    If this library does not support perfect forwarding, +determines the number of arguments less than which +parameters generates an exponential number of function call operator +overloads, and greater than or equal to which parameters does +not. Will only be #defined by the library +if it is not already #defined and +BOOST_PARAMETER_HAS_PERFECT_FORWARDING +is not #defined.

    + +++ + + + + + +
    Defined in:boost/parameter/config.hpp
    + +++ + + + + + + +
    Default Value:11
    Minimum Value:1
    -

    8   Tutorial

    +

    8   Tutorial

    Follow this link to the Boost.Parameter tutorial documentation.


    diff --git a/doc/index.rst b/doc/index.rst index 249692b..00b5d6f 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -674,10 +674,11 @@ names in ``consume(…)`` or ``move_from(…)``. In order to see what happens when parameters are bound to arguments that violate their category constraints, attempt to compile the |compose_cpp|_ test -program with the ``LIBS_PARAMETER_TEST_COMPILE_FAILURE_0`` macro or the -``LIBS_PARAMETER_TEST_COMPILE_FAILURE_1`` macro ``#defined``. You should -encounter at least four compiler errors, each corresponding to a specific -constraint violation. +program with either the ``LIBS_PARAMETER_TEST_COMPILE_FAILURE_0`` macro, the +``LIBS_PARAMETER_TEST_COMPILE_FAILURE_1`` macro, the +``LIBS_PARAMETER_TEST_COMPILE_FAILURE_2`` macro, or the +``LIBS_PARAMETER_TEST_COMPILE_FAILURE_3`` macro ``#defined``. You should +encounter a compiler error caused by a specific constraint violation. .. @example.prepend(''' #include @@ -2504,6 +2505,45 @@ issues and workarounds for particular compilers. .. _`regression test results`: http://www.boost.org/regression/release/user/parameter.html +-------------------------- +Perfect Forwarding Support +-------------------------- + +If your compiler supports `perfect forwarding`_, then the Parameter library +will ``#define`` the macro ``BOOST_PARAMETER_HAS_PERFECT_FORWARDING`` unless +you disable it manually. If your compiler does not provide this support, then +``parameter::parameters::operator()`` will treat rvalue references as lvalue +const references to work around the `forwarding problem`_, so in certain cases +you must wrap |boost_ref|_ or |std_ref|_ around any arguments that will be +bound to out parameters. The |evaluate_category|_ and +|preprocessor_eval_category|_ test programs demonstrate this support. + +.. _`perfect forwarding`: http://www.justsoftwaresolutions.co.uk/cplusplus/rvalue_references_and_perfect_forwarding.html +.. _`forwarding problem`: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm +.. |boost_ref| replace:: ``boost\:\:ref`` +.. _boost_ref: ../../../core/doc/html/core/ref.html +.. |std_ref| replace:: ``std\:\:ref`` +.. _std_ref: http://en.cppreference.com/w/cpp/utility/functional/ref +.. |evaluate_category| replace:: evaluate_category.cpp +.. _evaluate_category: ../../test/evaluate_category.cpp +.. |preprocessor_eval_category| replace:: preprocessor_eval_category.cpp +.. _preprocessor_eval_category: ../../test/preprocessor_eval_category.cpp + +----------------- +No SFINAE Support +----------------- + +Some older compilers don't support SFINAE. If your compiler meets that +criterion, then Boost headers will ``#define`` the preprocessor symbol +``BOOST_NO_SFINAE``, and parameter-enabled functions won't be removed +from the overload set based on their signatures. The |sfinae_cpp|_ and +|optional_deduced_sfinae|_ test programs demonstrate SFINAE support. + +.. |sfinae_cpp| replace:: sfinae.cpp +.. _sfinae_cpp: ../../test/sfinae.cpp +.. |optional_deduced_sfinae| replace:: optional_deduced_sfinae.cpp +.. _optional_deduced_sfinae: ../../test/optional_deduced_sfinae.cpp + --------------------------- No Support for |result_of|_ --------------------------- @@ -2522,6 +2562,58 @@ function as a default generator on those compilers, you'll need to wrap it in a class that provides ``result_type`` as a ``typedef`` and invokes the function via its ``operator()``. +--------------------------------------------- +Can't Declare |ParameterSpec| via ``typedef`` +--------------------------------------------- + +In principle you can declare a |ParameterSpec| as a ``typedef`` for a +specialization of ``parameters<…>``, but Microsoft Visual C++ 6.x has been +seen to choke on that usage. The workaround is to use inheritance and declare +your |ParameterSpec| as a class: + +.. parsed-literal:: + + **struct dfs_parameters + :** parameter::parameters< + tag::graph, tag::visitor, tag::root_vertex + , tag::index_map, tag::color_map + > + **{ + };** + +------------------------------------------------- +Default Arguments Unsupported on Nested Templates +------------------------------------------------- + +As of this writing, Borland compilers don't support the use of default +template arguments on member class templates. As a result, you have to supply +``BOOST_PARAMETER_MAX_ARITY`` arguments to every use of +``parameters<…>::match``. Since the actual defaults used are unspecified, the +workaround is to use |BOOST_PARAMETER_MATCH|_ to declare default arguments for +SFINAE. + +.. |BOOST_PARAMETER_MATCH| replace:: ``BOOST_PARAMETER_MATCH`` + +-------------------------------------------------- +Compiler Can't See References In Unnamed Namespace +-------------------------------------------------- + +If you use Microsoft Visual C++ 6.x, you may find that the compiler has +trouble finding your keyword objects. This problem has been observed, but +only on this one compiler, and it disappeared as the test code evolved, so +we suggest you use it only as a last resort rather than as a preventative +measure. The solution is to add *using-declarations* to force the names +to be available in the enclosing namespace without qualification:: + + namespace graphs { + + using graphs::graph; + using graphs::visitor; + using graphs::root_vertex; + using graphs::index_map; + using graphs::color_map; + } + ============== Python Binding ============== @@ -2620,4 +2712,21 @@ lives in an outer namespace by applying a *using-declaration*:: This technique for avoiding unintentional argument-dependent lookup is due to Herb Sutter. +.. [#sfinae] This capability depends on your compiler's support for +SFINAE. **SFINAE**: **S**\ ubstitution **F**\ ailure **I**\ s **N**\ ot +**A**\ n **E**\ rror. If type substitution during the instantiation of a +function template results in an invalid type, no compilation error is emitted; +instead the overload is removed from the overload set. By producing an +invalid type in the function signature depending on the result of some +condition, we can decide whether or not an overload is considered during +overload resolution. The technique is formalized in the |enable_if|_ +utility. Most recent compilers support SFINAE; on compilers that don't +support it, the Boost config library will ``#define`` the symbol +``BOOST_NO_SFINAE``. See +http://www.semantics.org/once_weakly/w02_SFINAE.pdf for more information on +SFINAE. + +.. |enable_if| replace:: ``enable_if`` +.. _enable_if: ../../../core/doc/html/core/enable_if.html + diff --git a/doc/reference.rst b/doc/reference.rst index 769733f..1b06f9b 100644 --- a/doc/reference.rst +++ b/doc/reference.rst @@ -83,6 +83,8 @@ requirements given in the detailed description that follows the code block. In a specification of the tokens generated by a macro, **bold type** is used to highlight the position of the expanded macro argument in the result. +The special character β represents the value of |BOOST_PARAMETER_MAX_ARITY|_. + ////////////////////////////////////////////////////////////////////////////// Terminology @@ -290,6 +292,8 @@ The type of every |keyword object| is a specialization of |keyword|. __ ../../../../boost/parameter/keyword.hpp +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is ``#defined``, **then** + .. parsed-literal:: template @@ -298,16 +302,16 @@ __ ../../../../boost/parameter/keyword.hpp template typename boost::`enable_if`_< typename boost::mpl::`eval_if_`_< - std::`is_scalar`_ + boost::`is_scalar`_ , boost::mpl::`true_`_ , boost::mpl::`eval_if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::in_reference > , boost::mpl::`true_`_ , boost::mpl::`if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::forward_reference > @@ -324,13 +328,13 @@ __ ../../../../boost/parameter/keyword.hpp typename boost::`enable_if`_< typename boost::mpl::`eval_if_`_< typename boost::mpl::`eval_if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::out_reference > , boost::mpl::`true_`_ , boost::mpl::`if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::forward_reference > @@ -339,7 +343,7 @@ __ ../../../../boost/parameter/keyword.hpp > >::type , boost::mpl::`if_`_< - std::`is_const`_ + boost::`is_const`_ , boost::mpl::`false_`_ , boost::mpl::`true_`_ > @@ -352,16 +356,16 @@ __ ../../../../boost/parameter/keyword.hpp template typename boost::`enable_if`_< typename boost::mpl::`eval_if_`_< - std::`is_scalar`_ + boost::`is_scalar`_ , boost::mpl::`false_`_ , boost::mpl::`eval_if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::in_reference > , boost::mpl::`true_`_ , boost::mpl::`if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::forward_reference > @@ -377,16 +381,16 @@ __ ../../../../boost/parameter/keyword.hpp template typename boost::`enable_if`_< typename boost::mpl::`eval_if_`_< - std::`is_scalar`_ + boost::`is_scalar`_ , boost::mpl::`false_`_ , boost::mpl::`eval_if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::consume_reference > , boost::mpl::`true_`_ , boost::mpl::`if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::forward_reference > @@ -402,16 +406,16 @@ __ ../../../../boost/parameter/keyword.hpp template typename boost::`enable_if`_< typename boost::mpl::`eval_if_`_< - std::`is_scalar`_ + boost::`is_scalar`_ , boost::mpl::`true_`_ , boost::mpl::`eval_if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::in_reference > , boost::mpl::`true_`_ , boost::mpl::`if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::forward_reference > @@ -428,13 +432,13 @@ __ ../../../../boost/parameter/keyword.hpp typename boost::`enable_if`_< typename boost::mpl::`eval_if_`_< typename boost::mpl::`eval_if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::out_reference > , boost::mpl::`true_`_ , boost::mpl::`if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::forward_reference > @@ -443,7 +447,7 @@ __ ../../../../boost/parameter/keyword.hpp > >::type , boost::mpl::`if_`_< - std::`is_const`_ + boost::`is_const`_ , boost::mpl::`false_`_ , boost::mpl::`true_`_ > @@ -456,16 +460,16 @@ __ ../../../../boost/parameter/keyword.hpp template typename boost::`enable_if`_< typename boost::mpl::`eval_if_`_< - std::`is_scalar`_ + boost::`is_scalar`_ , boost::mpl::`true_`_ , boost::mpl::`eval_if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::in_reference > , boost::mpl::`true_`_ , boost::mpl::`if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::forward_reference > @@ -481,16 +485,16 @@ __ ../../../../boost/parameter/keyword.hpp template typename boost::`enable_if`_< typename boost::mpl::`eval_if_`_< - std::`is_scalar`_ + boost::`is_scalar`_ , boost::mpl::`false_`_ , boost::mpl::`eval_if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::consume_reference > , boost::mpl::`true_`_ , boost::mpl::`if_`_< - std::`is_same`_< + boost::`is_same`_< typename Tag::qualifier , boost::parameter::forward_reference > @@ -514,13 +518,140 @@ __ ../../../../boost/parameter/keyword.hpp static keyword& get_\(); }; +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is **not** ``#defined``, +**then** + +.. parsed-literal:: + + template + struct keyword + { + template + typename boost::`enable_if`_< + typename boost::mpl::`eval_if_`_< + boost::`is_scalar`_ + , boost::mpl::`true_`_ + , boost::mpl::`eval_if_`_< + boost::`is_same`_< + typename Tag::qualifier + , boost::parameter::in_reference + > + , boost::mpl::`true_`_ + , boost::mpl::`if_`_< + boost::`is_same`_< + typename Tag::qualifier + , boost::parameter::forward_reference + > + , boost::mpl::`true_`_ + , boost::mpl::`false_`_ + > + > + >::type + , |ArgumentPack|_ + >::type constexpr + `operator=`_\(T const& value) const; + + template + typename boost::`enable_if`_< + typename boost::mpl::`eval_if_`_< + typename boost::mpl::`eval_if_`_< + boost::`is_same`_< + typename Tag::qualifier + , boost::parameter::out_reference + > + , boost::mpl::`true_`_ + , boost::mpl::`if_`_< + boost::`is_same`_< + typename Tag::qualifier + , boost::parameter::forward_reference + > + , boost::mpl::`true_`_ + , boost::mpl::`false_`_ + > + >::type + , boost::mpl::`if_`_< + boost::`is_const`_ + , boost::mpl::`false_`_ + , boost::mpl::`true_`_ + > + , boost::mpl::`false_`_ + >::type + , |ArgumentPack|_ + >::type constexpr + `operator=`_\(T& value) const; + + template + typename boost::`enable_if`_< + typename boost::mpl::`eval_if_`_< + boost::`is_scalar`_ + , boost::mpl::`true_`_ + , boost::mpl::`eval_if_`_< + boost::`is_same`_< + typename Tag::qualifier + , boost::parameter::in_reference + > + , boost::mpl::`true_`_ + , boost::mpl::`if_`_< + boost::`is_same`_< + typename Tag::qualifier + , boost::parameter::forward_reference + > + , boost::mpl::`true_`_ + , boost::mpl::`false_`_ + > + > + >::type + , *tagged default* + >::type + `operator|`_\(T const& x) const; + + template + typename boost::`enable_if`_< + typename boost::mpl::`eval_if_`_< + typename boost::mpl::`eval_if_`_< + boost::`is_same`_< + typename Tag::qualifier + , boost::parameter::out_reference + > + , boost::mpl::`true_`_ + , boost::mpl::`if_`_< + boost::`is_same`_< + typename Tag::qualifier + , boost::parameter::forward_reference + > + , boost::mpl::`true_`_ + , boost::mpl::`false_`_ + > + >::type + , boost::mpl::`if_`_< + boost::`is_const`_ + , boost::mpl::`false_`_ + , boost::mpl::`true_`_ + > + , boost::mpl::`false_`_ + >::type + , *tagged default* + >::type + `operator|`_\(T& x) const; + + template + *tagged lazy default* `operator||`_\(F const&) const; + + template + *tagged lazy default* `operator||`_\(F&) const; + + static keyword const& instance; + + static keyword& get_\(); + }; + .. _enable_if: ../../../core/doc/html/core/enable_if.html .. _eval_if_: ../../../mpl/doc/refmanual/eval-if.html .. _false_: ../../../mpl/doc/refmanual/bool.html .. _if_: ../../../mpl/doc/refmanual/if.html -.. _is_const: http://en.cppreference.com/w/cpp/types/is_const -.. _is_same: http://en.cppreference.com/w/cpp/types/is_same -.. _is_scalar: http://en.cppreference.com/w/cpp/types/is_scalar +.. _is_const: ../../../type_traits/doc/html/boost_typetraits/is_const.html +.. _is_same: ../../../type_traits/doc/html/boost_typetraits/is_same.html +.. _is_scalar: ../../../type_traits/doc/html/boost_typetraits/is_scalar.html .. _true_: ../../../mpl/doc/refmanual/bool.html .. |operator=| replace:: ``operator=`` @@ -531,6 +662,10 @@ __ ../../../../boost/parameter/keyword.hpp template |ArgumentPack|_ operator=(T const& value) const; template |ArgumentPack|_ operator=(T& value) const; + +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is ``#defined``, **then** +.. parsed-literal:: + template |ArgumentPack|_ operator=(T const&& value) const; template |ArgumentPack|_ operator=(T&& value) const; @@ -562,6 +697,10 @@ nested ``qualifier`` type of ``Tag`` must be ``consume_reference`` or template *tagged default* operator|(T const& x) const; template *tagged default* operator|(T& x) const; + +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is ``#defined``, **then** +.. parsed-literal:: + template *tagged default* operator|(T const&& x) const; template *tagged default* operator|(T&& x) const; @@ -641,7 +780,7 @@ corresponding template argument to ``parameters``. __ ../../../../boost/parameter/parameters.hpp -.. parsed-literal:: +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is ``#defined``, **then** template struct parameters @@ -684,12 +823,78 @@ __ ../../../../boost/parameter/parameters.hpp | else | ``K`` ## *i* is the |keyword tag type| of ``P`` ## *i*. +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is **not** ``#defined``, +**then** + +.. parsed-literal:: + + template < + typename P0 = *unspecified* + , typename P1 = *unspecified* + , … + , typename P ## β = *unspecified* + > + struct parameters + { + template < + typename A0 + , typename A1 = *unspecified* + , … + , typename A ## β = *unspecified* + > + struct `match`_ + { + typedef … type; + }; + + template + |ArgumentPack|_ `operator()`_\(A0& a0) const; + + template + |ArgumentPack|_ `operator()`_\(A0& a0, A1& a1) const; + + :vellipsis:`⋮` + + template + |ArgumentPack|_ + `operator()`_\(A0& a0, A1& a1, …, A ## β & a ## β) const; + }; + +:Requires: ``P0``, ``P1``, …, ``P`` ## β must be models of |ParameterSpec|_. + +.. Note:: + + In this section, ``R`` ## *i* and ``K`` ## *i* are defined as follows: for + any argument type ``A`` ## *i*: + + | let ``D0`` the set [ d0, …, d ## *j*] of all **deduced** + | *parameter specs* in [ ``P0``, …, ``P`` ## β] + | ``R`` ## *i* is the |intended argument type| of ``A`` ## *i* + | + | if ``A`` ## *i* is a result type of ``keyword::`` |operator=|_ + | then + | ``K`` ## *i* is ``T`` + | else + | if some ``A`` ## *j* where *j* ≤ *i* is a result type of + | ``keyword::`` |operator=|_ + | *or* some ``P`` ## *j* in *j* ≤ *i* is **deduced** + | then + | if some *parameter spec* ``d`` ## *j* in ``D`` ## *i* + | matches ``A`` ## *i* + | then + | ``K`` ## *i* is the |keyword tag type| of ``d`` ## *j*. + | ``D``:sub:`i+1` is ``D`` ## *i* - [ ``d`` ## *j*] + | else + | ``K`` ## *i* is the |keyword tag type| of ``P`` ## *i*. + .. _match: ``match`` A |Metafunction|_ used to remove a `forwarding function`_ from overload resolution. +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is ``#defined``, **then** + :Returns: if all elements in ``Params...`` are *satisfied* (see below), then ``parameters``. Otherwise, ``match::type`` is not defined. @@ -706,15 +911,49 @@ Each element ``P`` in ``Params...`` is **satisfied** if either: - ``X`` is some ``K`` ## *i*, **and** - ``mpl::apply::type::value`` is ``true`` +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is **not** ``#defined``, +**then** + +:Returns: if ``P0``, ``P1``, …, ``Pβ`` are *satisfied* (see below), then +``parameters``. Otherwise, ``match::type`` is not +defined. + +``P0``, ``P1``, …, ``Pβ`` are **satisfied** if, for every *j* in 0…β, +either: + +* ``P`` ## *j* is the *unspecified* default +* **or**, ``P`` ## *j* is a *keyword tag type* +* **or**, ``P`` ## *j* is |optional|_ ```` and either + - ``X`` is not ``K`` ## *i* for any *i*, + - **or** ``X`` is some ``K`` ## *i* and ``mpl::apply::type::value`` is ``true`` +* **or**, ``P`` ## *j* is |required|_ ````, and + - ``X`` is some ``K`` ## *i*, **and** + - ``mpl::apply::type::value`` is ``true`` + .. _operator(): ``operator()`` +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is ``#defined``, **then** + .. parsed-literal:: template |ArgumentPack|_ operator()(Args&&... args) const; +**Else** + +.. parsed-literal:: + + template |ArgumentPack|_ operator()(A0 const& a0) const; + + :vellipsis:`⋮` + + template + |ArgumentPack|_ + `operator()`_\(A0 const& a0, …, A ## β const& a ## β) const; + :Returns: An |ArgumentPack|_ containing, for each ``a`` ## *i*, - if ``a`` ## *i* is a single-element |ArgumentPack|, its element @@ -733,7 +972,9 @@ Each element ``P`` in ``Params...`` is **satisfied** if either: These templates describe the requirements on a function parameter. ``optional`` is defined in: |optional_header|_ + ``required`` is defined in: |required_header|_ + Both headers are included by: |preprocessor_header|_ .. |optional_header| replace:: boost/parameter/optional.hpp @@ -960,6 +1201,8 @@ Approximate expansion: * ``n`` denotes the *minimum* arity, as determined from ``arguments``. * ``m`` denotes the *maximum* arity, as determined from ``arguments``. +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is ``#defined``, **then** + .. parsed-literal:: template @@ -1130,10 +1373,200 @@ Approximate expansion: , *argument name* ## **m** ## _type&& *argument name* ## **m** ) +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is **not** ``#defined``, +**then** + +.. parsed-literal:: + + template + struct boost_param_result\_ ## __LINE__ ## **name** + { + typedef **result** type; + }; + + struct boost_param_params\_ ## __LINE__ ## **name** + : boost::parameter::parameters< + *list of parameter specifications, based on arguments* + > + { + }; + + typedef boost_param_params\_ ## __LINE__ ## **name** + boost_param_parameters\_ ## __LINE__ ## **name**; + + template + typename boost_param_result\_ ## __LINE__ ## **name**\ ::type + boost_param_impl ## **name**\ (Args const&); + + template + **result** + **name**\ ( + A0 const& a0, …, A ## **n** const& a ## **n** + , typename boost_param_parameters\_ ## __LINE__ ## **name**::match< + A0 const, …, A ## **n** const + >::type = boost_param_parameters\_ ## __LINE__ ## **name**\ () + ) + { + return boost_param_impl ## **name**\ ( + boost_param_parameters\_ ## __LINE__ ## **name**\ ()( + a0, …, a ## **n** + ) + ); + } + + *… exponential number of overloads …* + :vellipsis:`⋮` + + template + **result** + **name**\ ( + A0& a0, …, A ## **n** & a ## **n** + , typename boost_param_parameters\_ ## __LINE__ ## **name**::match< + A0, …, A ## **n** + >::type = boost_param_parameters\_ ## __LINE__ ## **name**\ () + ) + { + return boost_param_impl ## **name**\ ( + boost_param_parameters\_ ## __LINE__ ## **name**\ ()( + a0, …, a ## **n** + ) + ); + } + + :vellipsis:`⋮` + + template + **result** + **name**\ ( + A0 const& a0, …, A ## **m** const& a ## **m** + , typename boost_param_parameters\_ ## __LINE__ ## **name**::match< + A0 const, …, A ## **m** const + >::type = boost_param_parameters\_ ## __LINE__ ## **name**\ () + ) + { + return boost_param_impl ## **name**\ ( + boost_param_parameters\_ ## __LINE__ ## **name**\ ()( + a0, …, a ## **m** + ) + ); + } + + *… exponential number of overloads …* + :vellipsis:`⋮` + + template + **result** + **name**\ ( + A0& a0, …, A ## **m** & a ## **m** + , typename boost_param_parameters\_ ## __LINE__ ## **name**::match< + A0, …, A ## **m** + >::type = boost_param_parameters\_ ## __LINE__ ## **name**\ () + ) + { + return boost_param_impl ## **name**\ ( + boost_param_parameters\_ ## __LINE__ ## **name**\ ()( + a0, …, a ## **m** + ) + ); + } + + template < + typename ResultType + , typename Args + , typename *argument name* ## **0** ## _type + , … + , typename *argument name* ## **n** ## _type + > + ResultType + boost_param_dispatch_0boost\_ ## __LINE__ ## **name**\ ( + (ResultType(\ *)()) + , Args const& args + , *argument name* ## **0** ## _type& *argument name* ## **0** + , … + , *argument name* ## **n** ## _type& *argument name* ## **m** + ); + + :vellipsis:`⋮` + + template < + typename ResultType + , typename Args + , typename *argument name* ## **0** ## _type + , … + , typename *argument name* ## **m** ## _type + > + ResultType + boost_param_dispatch_0boost\_ ## __LINE__ ## **name**\ ( + (ResultType(\ *)()) + , Args const& args + , *argument name* ## **0** ## _type& *argument name* ## **0** + , … + , *argument name* ## **m** ## _type& *argument name* ## **m** + ); + + template + typename boost_param_result\_ ## __LINE__ ## **name**\ ::type + boost_param_impl ## **name**\ (Args const& args) + { + return boost_param_dispatch_0boost\_ ## __LINE__ ## **name**\ ( + static_cast(std::nullptr) + , args + , args[ *keyword object of required parameter* ## **0**] + , … + , args[ *keyword object of required parameter* ## **n**] + ); + } + + template < + typename ResultType + , typename Args + , typename *argument name* ## **0** ## _type + , … + , typename *argument name* ## **n** ## _type + > + ResultType + boost_param_dispatch_0boost\_ ## __LINE__ ## **name**\ ( + (ResultType(\ *)()) + , Args const& args + , *argument name* ## **0** ## _type& *argument name* ## **0** + , … + , *argument name* ## **n** ## _type& *argument name* ## **m** + ) + { + return boost_param_dispatch_0boost\_ ## __LINE__ ## **name**\ ( + static_cast(std::nullptr) + , (args, *keyword object of optional parameter* ## **n + 1** = + *default value of optional parameter* ## **n + 1** + ) + , *argument name* ## **0** + , … + , *argument name* ## **n** + , *default value of optional parameter* ## **n + 1** + ); + } + + :vellipsis:`⋮` + + template < + typename ResultType + , typename Args + , typename *argument name* ## **0** ## _type + , … + , typename *argument name* ## **m** ## _type + > + ResultType + boost_param_dispatch_0boost\_ ## __LINE__ ## **name**\ ( + (ResultType(\ *)()) + , Args const& args + , *argument name* ## **0** ## _type& *argument name* ## **0** + :vellipsis:`⋮` + , *argument name* ## **m** ## _type& *argument name* ## **m** + ) + The |preprocessor|_, |preprocessor_deduced|_, and |preprocessor_eval_cat|_ test programs demonstrate proper usage of this macro. -.. _`forward`: http://en.cppreference.com/w/cpp/utility/forward +.. _`forward`: http\://en.cppreference.com/w/cpp/utility/forward .. |preprocessor| replace:: preprocessor.cpp .. _preprocessor: ../../test/preprocessor.cpp .. |preprocessor_deduced| replace:: preprocessor_deduced.cpp @@ -1247,6 +1680,8 @@ Approximate expansion: * ``n`` denotes the *minimum* arity, as determined from ``arguments``. * ``m`` denotes the *maximum* arity, as determined from ``arguments``. +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is ``#defined``, **then** + .. parsed-literal:: struct boost_param_params\_ ## __LINE__ ## ctor @@ -1284,11 +1719,58 @@ Approximate expansion: ) { } -= + +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is **not** ``#defined``, +**then** + +.. parsed-literal:: + + struct boost_param_params\_ ## __LINE__ ## ctor + : boost::parameter::parameters< + *list of parameter specifications, based on arguments* + > + { + }; + + typedef boost_param_params\_ ## __LINE__ ## **name** + constructor_parameters ## __LINE__; + + template + *cls*\ (A0 const& a0, …, A ## **n** const& a ## **n**) + : *impl*\ (constructor_parameters ## __LINE__(a0, …, a ## **n**)) + { + } + + *… exponential number of overloads …* + :vellipsis:`⋮` + + template + *cls*\ (A0& a0, …, A ## **n** & a ## **n**) + : *impl*\ (constructor_parameters ## __LINE__(a0, …, a ## **n**)) + { + } + + :vellipsis:`⋮` + + template + *cls*\ (A0 const& a0, …, A ## **m** const& a ## **m**) + : *impl*\ (constructor_parameters ## __LINE__(a0, …, a ## **m**)) + { + } + + *… exponential number of overloads …* + :vellipsis:`⋮` + + template + *cls*\ (A0& a0, …, A ## **m** & a ## **m**) + : *impl*\ (constructor_parameters ## __LINE__(a0, …, a ## **m**)) + { + } + The |preprocessor|_ and |preprocessor_eval_cat|_ test programs demonstrate proper usage of this macro. -.. _`forward`: http://en.cppreference.com/w/cpp/utility/forward +.. _`forward`: http\://en.cppreference.com/w/cpp/utility/forward .. |preprocessor| replace:: preprocessor.cpp .. _preprocessor: ../../test/preprocessor.cpp .. |preprocessor_eval_cat| replace:: preprocessor_eval_category.cpp @@ -1507,6 +1989,8 @@ __ ../../../../boost/parameter/macros.hpp :Requires: ``l`` and ``h`` are nonnegative integer tokens such that ``l`` < ``h`` +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is ``#defined``, **then** + Expands to: .. parsed-literal:: @@ -1576,11 +2060,114 @@ Expands to: ); } +**If** |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is **not** ``#defined``, +**then** + +Expands to: + +.. parsed-literal:: + + template + r + name( + A1 const& a1, A2 const& a2, …, A ## **l** const& a ## **l** + , typename **p**::match::type pk = **p**\ () + ) + { + return **name**\ _with_named_params(pk(a1, a2, …, a ## **l**)); + } + + *… exponential number of overloads …* + :vellipsis:`⋮` + + template + r + name( + A1& a1, A2& a2, …, A ## **l** & a ## **l** + , typename **p**::match::type pk = **p**\ () + ) + { + return **name**\ _with_named_params(pk(a1, a2, …, a ## **l**)); + } + + template < + typename A1 + , typename A2 + , … + , typename A ## **l** + , typename A ## `BOOST_PP_INC`_\ (**l**) + > + r + name( + A1 const& a1, A2 const& a2, …, A ## **l** const& a ## **l** + , A ## `BOOST_PP_INC`_\ (**l**) const& a ## `BOOST_PP_INC`_\ (**l**) + , typename **p**::match< + A1 const, A2 const, …, A ## **l** const + , A ## `BOOST_PP_INC`_\ (**l**) const + >::type pk = **p**\ () + ) + { + return **name**\ _with_named_params( + pk(a1, a2, …, a ## **l**, a ## `BOOST_PP_INC`_\ (**l**)) + ); + } + + *… exponential number of overloads …* + :vellipsis:`⋮` + + template < + typename A1 + , typename A2 + , … + , typename A ## **l** + , typename A ## `BOOST_PP_INC`_\ (**l**) + > + r + name( + A1& a1, A2& a2, …, A ## **l** & a ## **l** + , A ## `BOOST_PP_INC`_\ (**l**) & a ## `BOOST_PP_INC`_\ (**l**) + , typename **p**::match< + A1, A2, …, A ## **l**, A ## `BOOST_PP_INC`_\ (**l**) + >::type pk = **p**\ () + ) + { + return **name**\ _with_named_params( + pk(a1, a2, …, a ## **l**, a ## `BOOST_PP_INC`_\ (**l**)) + ); + } + + :vellipsis:`⋮` + + template + r + name( + A1 const& a1, A2 const& a2, …, A ## **h** const& x ## **h** + , typename **p**::match< + A1 const, A2 const, …, A ## **h** const + >::type pk = **p**\ () + ) + { + return **name**\ _with_named_params(pk(a1, a2, …, a ## **h**)); + } + + *… exponential number of overloads …* + :vellipsis:`⋮` + + template + r + name( + A1& a1, A2& a2, …, A ## **h** & x ## **h** + , typename **p**::match::type pk = **p**\ () + ) + { + return **name**\ _with_named_params(pk(a1, a2, …, a ## **h**)); + } + The |macros_cpp|_ and |macros_eval_cat_cpp|_ test programs demonstrate proper usage of this macro. .. _`BOOST_PP_INC`: ../../../preprocessor/doc/ref/inc.html -.. _`forward`: http://en.cppreference.com/w/cpp/utility/forward +.. _`forward`: http\://en.cppreference.com/w/cpp/utility/forward .. |macros_cpp| replace:: macros.cpp .. _macros_cpp: ../../test/macros.cpp .. |macros_eval_cat_cpp| replace:: macros_eval_category.cpp @@ -1647,15 +2234,39 @@ Expands to: Configuration Macros ==================== +``BOOST_PARAMETER_HAS_PERFECT_FORWARDING`` +------------------------------------------ + +Determines whether or not the library supports perfect forwarding, or the +preservation of parameter value categories. Users can manually disable this +macro by ``#defining`` the ``BOOST_PARAMETER_DISABLE_PERFECT_FORWARDING`` +macro. Otherwise, the library will ``#define`` this macro if and only if it +and the configuration macros |BOOST_NO_FUNCTION_TEMPLATE_ORDERING|_ and +|BOOST_NO_SFINAE|_ are not already ``#defined`` but the configuration macro +|BOOST_MOVE_PERFECT_FORWARDING|_ is already defined. + +.. |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| replace:: ``BOOST_PARAMETER_HAS_PERFECT_FORWARDING`` +.. |BOOST_NO_FUNCTION_TEMPLATE_ORDERING| replace:: ``BOOST_NO_FUNCTION_TEMPLATE_ORDERING`` +.. _BOOST_NO_FUNCTION_TEMPLATE_ORDERING: ../../../config/doc/html/boost_config/boost_macro_reference.html +.. |BOOST_NO_SFINAE| replace:: ``BOOST_NO_SFINAE`` +.. _BOOST_NO_SFINAE: ../../../config/doc/html/boost_config/boost_macro_reference.html +.. |BOOST_MOVE_PERFECT_FORWARDING| replace:: ``BOOST_MOVE_PERFECT_FORWARDING`` +.. _BOOST_MOVE_PERFECT_FORWARDING: ../../../../boost/move/detail/workaround.hpp + +:Defined in: `boost/parameter/config.hpp`__ + +__ ../../../../boost/parameter/config.hpp + ``BOOST_PARAMETER_VARIADIC_MPL_SEQUENCE`` ----------------------------------------- -Determines the `MPL Variadic Sequence`_ underlying the nested -``parameter_spec`` type of |parameters|. If the user does not manually -``#define`` this macro, then the library will ``#define`` it as -|boost_fusion_list|_ if |BOOST_FUSION_HAS_VARIADIC_LIST|_ is defined, -|boost_fusion_deque|_ if |BOOST_FUSION_HAS_VARIADIC_DEQUE|_ is defined, -or |boost_mpl_vector|_ otherwise. +If |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is ``#defined``, then determines +the `MPL Variadic Sequence`_ underlying the nested ``parameter_spec`` type of +|parameters|. If the user does not manually ``#define`` this macro, then the +library will ``#define`` it as |boost_fusion_list|_ if +|BOOST_FUSION_HAS_VARIADIC_LIST|_ is defined, |boost_fusion_deque|_ if +|BOOST_FUSION_HAS_VARIADIC_DEQUE|_ is defined, or |boost_mpl_vector|_ +otherwise. :Example: @@ -1663,19 +2274,20 @@ or |boost_mpl_vector|_ otherwise. #define BOOST_PARAMETER_VARIADIC_MPL_SEQUENCE |boost_fusion_vector|_ +.. |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| replace:: ``BOOST_PARAMETER_HAS_PERFECT_FORWARDING`` .. |BOOST_PARAMETER_VARIADIC_MPL_SEQUENCE| replace:: ``BOOST_PARAMETER_VARIADIC_MPL_SEQUENCE`` .. _`MPL Variadic Sequence`: ../../../mpl/doc/refmanual/variadic-sequence.html .. |BOOST_FUSION_HAS_VARIADIC_LIST| replace:: ``BOOST_FUSION_HAS_VARIADIC_LIST`` .. _BOOST_FUSION_HAS_VARIADIC_LIST: ../../../../boost/fusion/container/list/list_fwd.hpp -.. |boost_fusion_list| replace:: ``boost::fusion::list`` +.. |boost_fusion_list| replace:: ``boost\:\:fusion\:\:list`` .. _boost_fusion_list: ../../../fusion/doc/html/fusion/container/list.html .. |BOOST_FUSION_HAS_VARIADIC_DEQUE| replace:: ``BOOST_FUSION_HAS_VARIADIC_DEQUE`` .. _BOOST_FUSION_HAS_VARIADIC_DEQUE: ../../../../boost/fusion/container/deque/deque_fwd.hpp -.. |boost_fusion_deque| replace:: ``boost::fusion::deque`` +.. |boost_fusion_deque| replace:: ``boost\:\:fusion\:\:deque`` .. _boost_fusion_deque: ../../../fusion/doc/html/fusion/container/deque.html -.. |boost_fusion_vector| replace:: ``boost::fusion::vector`` +.. |boost_fusion_vector| replace:: ``boost\:\:fusion\:\:vector`` .. _boost_fusion_vector: ../../../fusion/doc/html/fusion/container/vector.html -.. |boost_mpl_vector| replace:: ``boost::mpl::vector`` +.. |boost_mpl_vector| replace:: ``boost\:\:mpl\:\:vector`` .. _boost_mpl_vector: ../../../mpl/doc/refmanual/vector.html :Defined in: `boost/parameter/parameters.hpp`__ @@ -1685,32 +2297,67 @@ __ ../../../../boost/parameter/parameters.hpp ``BOOST_PARAMETER_MAX_ARITY`` ----------------------------- -Determines the maximum number of arguments supported by the library. If the -`MPL Variadic Sequence`_ underlying the nested ``parameter_spec`` type of -|parameters| does not have a size limit--which is the case with +Determines the maximum number of arguments supported by the library. + +If |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is ``#defined``, then: + +\*. If the `MPL Variadic Sequence`_ underlying the nested ``parameter_spec`` +type of |parameters| does not have a size limit--which is the case with |boost_fusion_list|_ and |boost_fusion_deque|_, but not |boost_mpl_vector|_--then this macro can be safely ignored. User code that manually defines |BOOST_PARAMETER_VARIADIC_MPL_SEQUENCE| should also manually define this macro to the size limit of the sequence if it has one. +If |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| is **not** ``#defined``, then: + +\*. Mutable references must be wrapped by |boost_ref|_ or |std_ref|_ if passed +by position to Boost.Parameter-enabled functions with arity greater than or +equal to ``BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY``. + +.. |BOOST_PARAMETER_HAS_PERFECT_FORWARDING| replace:: ``BOOST_PARAMETER_HAS_PERFECT_FORWARDING`` .. |BOOST_PARAMETER_VARIADIC_MPL_SEQUENCE| replace:: ``BOOST_PARAMETER_VARIADIC_MPL_SEQUENCE`` +.. |BOOST_PARAMETER_MAX_ARITY| replace:: ``BOOST_PARAMETER_MAX_ARITY`` .. _`MPL Variadic Sequence`: ../../../mpl/doc/refmanual/variadic-sequence.html -.. |boost_fusion_list| replace:: ``boost::fusion::list`` +.. |boost_fusion_list| replace:: ``boost\:\:fusion\:\:list`` .. _boost_fusion_list: ../../../fusion/doc/html/fusion/container/list.html -.. |boost_fusion_deque| replace:: ``boost::fusion::deque`` +.. |boost_fusion_deque| replace:: ``boost\:\:fusion\:\:deque`` .. _boost_fusion_deque: ../../../fusion/doc/html/fusion/container/deque.html -.. |boost_mpl_vector| replace:: ``boost::mpl::vector`` +.. |boost_mpl_vector| replace:: ``boost\:\:mpl\:\:vector`` .. _boost_mpl_vector: ../../../mpl/doc/refmanual/vector.html +.. |boost_ref| replace:: ``boost\:\:ref`` +.. _boost_ref: ../../../core/doc/html/core/ref.html +.. |std_ref| replace:: ``std\:\:ref`` +.. _std_ref: http://en.cppreference.com/w/cpp/utility/functional/ref :Defined in: `boost/parameter/config.hpp`__ __ ../../../../boost/parameter/config.hpp -:Default Value: |BOOST_MPL_LIMIT_VECTOR_SIZE|_ +:Default Value: |BOOST_MPL_LIMIT_VECTOR_SIZE|_ if perfect forwarding is supported, ``8`` otherwise. +:Minimum Value: ``2`` .. |BOOST_MPL_LIMIT_VECTOR_SIZE| replace:: ``BOOST_MPL_LIMIT_VECTOR_SIZE`` .. _BOOST_MPL_LIMIT_VECTOR_SIZE: ../../../mpl/doc/refmanual/limit-vector-size.html +``BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY`` +-------------------------------------------------------- + +If this library does **not** support perfect forwarding, determines the number +of arguments less than which |parameters| generates an exponential number of +function call operator overloads, and greater than or equal to which +|parameters| does not. Will only be ``#defined`` by the library if it is +not already ``#defined`` and ``BOOST_PARAMETER_HAS_PERFECT_FORWARDING`` is +**not** ``#defined``. + +.. |BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY| replace:: ``BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY`` + +:Defined in: `boost/parameter/config.hpp`__ + +__ ../../../../boost/parameter/config.hpp + +:Default Value: ``11`` +:Minimum Value: ``1`` + Tutorial ======== diff --git a/include/boost/parameter.hpp b/include/boost/parameter.hpp index 26b8453..af98339 100644 --- a/include/boost/parameter.hpp +++ b/include/boost/parameter.hpp @@ -9,6 +9,9 @@ #define BOOST_PARAMETER_050401_HPP #include +#include +#include +#include #include #include #include diff --git a/include/boost/parameter/aux_/arg_list.hpp b/include/boost/parameter/aux_/arg_list.hpp index b7bd58e..637c1d5 100755 --- a/include/boost/parameter/aux_/arg_list.hpp +++ b/include/boost/parameter/aux_/arg_list.hpp @@ -7,8 +7,6 @@ #ifndef ARG_LIST_050329_HPP #define ARG_LIST_050329_HPP -#include - namespace boost { namespace parameter { namespace aux { // @@ -29,6 +27,13 @@ namespace boost { namespace parameter { namespace aux { { typedef typename T::reference type; }; +}}} // namespace boost::parameter::aux + +#include + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +namespace boost { namespace parameter { namespace aux { struct value_type_is_void { @@ -39,10 +44,15 @@ namespace boost { namespace parameter { namespace aux { }; }}} // namespace boost::parameter::aux +#endif + #include #include #include #include + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + #include namespace boost { namespace parameter { namespace aux { @@ -79,22 +89,6 @@ namespace boost { namespace parameter { namespace aux { template static ::boost::parameter::aux::no_tag has_key(KW*); -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) - // The overload set technique doesn't work with these older compilers, - // so they need some explicit handholding. - - // A metafunction class that, given a keyword, returns the type of the - // base sublist whose get() function can produce the value for that key. - struct key_owner - { - template - struct apply - { - typedef ::boost::parameter::aux::empty_arg_list type; - }; - }; -#endif // Borland workarounds needed. - // If either of these operators are called, it means there is no // argument in the list that matches the supplied keyword. Just // return the default value. @@ -149,10 +143,7 @@ namespace boost { namespace parameter { namespace aux { #include #include #include - -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) #include -#endif namespace boost { namespace parameter { namespace aux { @@ -280,6 +271,342 @@ namespace boost { namespace parameter { namespace aux { }; }; + // Overload for key_type, so the assert below will fire + // if the same keyword is used again. + static ::boost::parameter::aux::yes_tag has_key(key_type*); + using Next::has_key; + + BOOST_MPL_ASSERT_MSG( + sizeof( + Next::has_key( + static_cast(BOOST_TTI_DETAIL_NULLPTR) + ) + ) == sizeof(::boost::parameter::aux::no_tag) + , duplicate_keyword + , (key_type) + ); + + // + // Begin implementation of indexing operators + // for looking up specific arguments by name. + // + + // Helpers that handle the case when TaggedArg is empty. + template + inline reference get_default(D const&, ::boost::mpl::false_) const + { + return this->arg.get_value(); + } + + template + inline reference get_default(D const& d, ::boost::mpl::true_) const + { + return ( + this->arg.get_value() + ? this->arg.get_value().get() + : this->arg.get_value().construct(d.value) + ); + } + + inline reference + operator[](::boost::parameter::keyword const&) const + { + BOOST_MPL_ASSERT_NOT((holds_maybe)); + return this->arg.get_value(); + } + + template + inline reference + operator[]( + ::boost::parameter::aux::default_ const& d + ) const + { + return this->get_default(d, holds_maybe()); + } + + template + inline reference + operator[]( + ::boost::parameter::aux::default_r_ const& d + ) const + { + return this->get_default(d, holds_maybe()); + } + + template + inline reference + operator[]( + BOOST_PARAMETER_lazy_default_fallback const& + ) const + { + BOOST_MPL_ASSERT_NOT((holds_maybe)); + return this->arg.get_value(); + } + + // Builds an overload set including operator[]s defined + // in base classes. + using Next::operator[]; + + // + // End of indexing support + // + + // For parameter_requirements matching this node's key_type, return + // a bool constant wrapper indicating whether the requirements are + // satisfied by TaggedArg. Used only for compile-time computation + // and never really called, so a declaration is enough. + template + static typename ::boost::mpl::apply_wrap2< + ::boost::parameter::aux + ::augment_predicate + , value_type + , ArgPack + >::type + satisfies( + ::boost::parameter::aux::parameter_requirements< + key_type + , Predicate + , HasDefault + >* + , ArgPack* + ); + + // Builds an overload set including satisfies functions defined + // in base classes. + using Next::satisfies; + + // Comma operator to compose argument list without using parameters<>. + // Useful for argument lists with undetermined length. + template + inline ::boost::parameter::aux::arg_list< + ::boost::parameter::aux::tagged_argument + , self + > + operator,( + ::boost::parameter::aux::tagged_argument const& x + ) const + { + return ::boost::parameter::aux::arg_list< + ::boost::parameter::aux::tagged_argument + , self + >(x, *this); + } + + template + inline ::boost::parameter::aux::arg_list< + ::boost::parameter::aux::tagged_argument_rref + , self + > + operator,( + ::boost::parameter::aux::tagged_argument_rref const& x + ) const + { + return ::boost::parameter::aux::arg_list< + ::boost::parameter::aux::tagged_argument_rref + , self + >(x, *this); + } + + // MPL sequence support + typedef self type; // Convenience for users + typedef Next tail_type; // For the benefit of iterators + // For dispatching to sequence intrinsics + typedef ::boost::parameter::aux::arg_list_tag tag; + }; +}}} // namespace boost::parameter::aux + +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +#include +#include + +namespace boost { namespace parameter { namespace aux { + + // Terminates arg_list<> and represents an empty list. Since this is just + // the terminating case, you might want to look at arg_list first to get a + // feel for what's really happening here. + struct empty_arg_list + { + inline empty_arg_list() + { + } + + // Constructor taking BOOST_PARAMETER_MAX_ARITY empty_arg_list + // arguments; this makes initialization. + inline empty_arg_list( + BOOST_PP_ENUM_PARAMS( + BOOST_PARAMETER_MAX_ARITY + , ::boost::parameter::void_ BOOST_PP_INTERCEPT + ) + ) + { + } + + // A metafunction class that, given a keyword and a default type, + // returns the appropriate result type for a keyword lookup given + // that default. + struct binding + { + template + struct apply + { + typedef Default type; + }; + }; + + // Terminator for has_key, indicating that the keyword is unique. + template + static ::boost::parameter::aux::no_tag has_key(KW*); + +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + // The overload set technique doesn't work with these older compilers, + // so they need some explicit handholding. + + // A metafunction class that, given a keyword, returns the type of the + // base sublist whose get() function can produce the value for that key. + struct key_owner + { + template + struct apply + { + typedef ::boost::parameter::aux::empty_arg_list type; + }; + }; +#endif // Borland workarounds needed. + + // If either of these operators are called, it means there is no + // argument in the list that matches the supplied keyword. Just + // return the default value. + template + inline Default& + operator[](::boost::parameter::aux::default_ x) const + { + return x.value; + } + + // If this operator is called, it means there is no argument in the + // list that matches the supplied keyword. Just evaluate and return + // the default value. + template + inline typename ::boost::parameter::aux::result_of0::type + operator[](BOOST_PARAMETER_lazy_default_fallback x) const + { + return x.compute_default(); + } + + // No argument corresponding to ParameterRequirements::key_type + // was found if we match this overload, so unless that parameter + // has a default, we indicate that the actual arguments don't + // match the function's requirements. + template + static typename ParameterRequirements::has_default + satisfies(ParameterRequirements*, ArgPack*); + + // MPL sequence support + typedef ::boost::parameter::aux::empty_arg_list type; // convenience + // For dispatching to sequence intrinsics + typedef ::boost::parameter::aux::arg_list_tag tag; + }; +}}} // namespace boost::parameter::aux + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#include +#endif + +namespace boost { namespace parameter { namespace aux { + + // A tuple of tagged arguments, terminated with empty_arg_list. Every + // TaggedArg is an instance of tagged_argument<>. + template < + typename TaggedArg + , typename Next = ::boost::parameter::aux::empty_arg_list + > + struct arg_list : Next + { + typedef TaggedArg tagged_arg; + typedef ::boost::parameter::aux::arg_list self; + typedef typename TaggedArg::key_type key_type; + + typedef typename ::boost::parameter::aux + ::is_maybe::type holds_maybe; + + typedef typename ::boost::mpl::eval_if< + holds_maybe + , ::boost::parameter::aux + ::get_reference + , ::boost::parameter::aux::get_reference + >::type reference; + + typedef typename ::boost::mpl::if_< + holds_maybe + , reference + , typename TaggedArg::value_type + >::type value_type; + + TaggedArg arg; // Stores the argument + + // Create a new list by prepending arg to a copy of tail. Used when + // incrementally building this structure with the comma operator. + inline arg_list(TaggedArg const& head, Next const& tail) + : Next(tail), arg(head) + { + } + + // Store the arguments in successive nodes of this list. + template < + // typename A0, typename A1, ... + BOOST_PP_ENUM_PARAMS(BOOST_PARAMETER_MAX_ARITY, typename A) + > + inline arg_list( + // A0& a0, A1& a1, ... + BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PARAMETER_MAX_ARITY, A, & a) + ) : Next( + // a1, a2, ... + BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PARAMETER_MAX_ARITY, a) + , ::boost::parameter::aux::void_reference() + ) + , arg(a0) + { + } + + // A metafunction class that, given a keyword and a default type, + // returns the appropriate result type for a keyword lookup given + // that default. + struct binding + { + typedef typename Next::binding next_binding; + + template + struct apply + { + typedef typename ::boost::mpl::eval_if< + ::boost::is_same + , ::boost::mpl::if_ + , ::boost::mpl::apply_wrap3< + next_binding + , KW + , Default + , Reference + > + >::type type; + }; + }; + #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) // Overload for key_type, so the assert below will fire // if the same keyword is used again. @@ -375,22 +702,6 @@ namespace boost { namespace parameter { namespace aux { return sublist.get(x); } - template - inline typename ::boost::mpl::apply_wrap3< - binding - , KW - , Default&& - , ::boost::mpl::true_ - >::type - operator[]( - ::boost::parameter::aux::default_r_ const& x - ) const - { - typename ::boost::mpl::apply_wrap1::type const& - sublist = *this; - return sublist.get(x); - } - template inline typename ::boost::mpl::apply_wrap3< binding @@ -427,15 +738,6 @@ namespace boost { namespace parameter { namespace aux { return this->get_default(d, holds_maybe()); } - template - inline reference - get( - ::boost::parameter::aux::default_r_ const& d - ) const - { - return this->get_default(d, holds_maybe()); - } - template inline reference get( @@ -461,15 +763,6 @@ namespace boost { namespace parameter { namespace aux { return this->get_default(d, holds_maybe()); } - template - inline reference - operator[]( - ::boost::parameter::aux::default_r_ const& d - ) const - { - return this->get_default(d, holds_maybe()); - } - template inline reference operator[]( @@ -530,21 +823,6 @@ namespace boost { namespace parameter { namespace aux { >(x, *this); } - template - inline ::boost::parameter::aux::arg_list< - ::boost::parameter::aux::tagged_argument_rref - , self - > - operator,( - ::boost::parameter::aux::tagged_argument_rref const& x - ) const - { - return ::boost::parameter::aux::arg_list< - ::boost::parameter::aux::tagged_argument_rref - , self - >(x, *this); - } - // MPL sequence support typedef self type; // Convenience for users typedef Next tail_type; // For the benefit of iterators @@ -553,6 +831,8 @@ namespace boost { namespace parameter { namespace aux { }; }}} // namespace boost::parameter::aux +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING + #include namespace boost { namespace parameter { namespace aux { diff --git a/include/boost/parameter/aux_/as_lvalue.hpp b/include/boost/parameter/aux_/as_lvalue.hpp new file mode 100755 index 0000000..d50b897 --- /dev/null +++ b/include/boost/parameter/aux_/as_lvalue.hpp @@ -0,0 +1,25 @@ +// Copyright Daniel Wallin 2006. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_AS_LVALUE_HPP +#define BOOST_PARAMETER_AUX_AS_LVALUE_HPP + +namespace boost { namespace parameter { namespace aux { + + template + T const& as_lvalue(T const& value) + { + return value; + } + + template + T& as_lvalue(T& value) + { + return value; + } +}}} // namespace boost::parameter::aux + +#endif // include guard + diff --git a/include/boost/parameter/aux_/default.hpp b/include/boost/parameter/aux_/default.hpp index 25eab3e..be31b48 100755 --- a/include/boost/parameter/aux_/default.hpp +++ b/include/boost/parameter/aux_/default.hpp @@ -7,8 +7,6 @@ #ifndef DEFAULT_050329_HPP #define DEFAULT_050329_HPP -#include - namespace boost { namespace parameter { namespace aux { // A wrapper for the default value passed by the user when resolving @@ -22,6 +20,11 @@ namespace boost { namespace parameter { namespace aux { Value& value; }; +}}} // namespace boost::parameter::aux + +#include + +namespace boost { namespace parameter { namespace aux { // lazy_default -- A wrapper for the default value computation function // passed by the user when resolving the value of the parameter with the @@ -73,6 +76,8 @@ namespace boost { namespace parameter { namespace aux { /**/ #endif +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + #include namespace boost { namespace parameter { namespace aux { @@ -88,5 +93,6 @@ namespace boost { namespace parameter { namespace aux { }; }}} // namespace boost::parameter::aux +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING #endif // include guard diff --git a/include/boost/parameter/aux_/is_tagged_argument.hpp b/include/boost/parameter/aux_/is_tagged_argument.hpp index cbd762f..61dccef 100755 --- a/include/boost/parameter/aux_/is_tagged_argument.hpp +++ b/include/boost/parameter/aux_/is_tagged_argument.hpp @@ -14,8 +14,13 @@ namespace boost { namespace parameter { namespace aux { }; }}} // namespace boost::parameter::aux +#include #include #include + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) || \ + (0 < BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY) + #include #include #include @@ -27,6 +32,8 @@ namespace boost { namespace parameter { namespace aux { template struct is_tagged_argument : ::boost::mpl::if_< + // Cannot use is_convertible<> to check if T is derived from + // tagged_argument_base. -- Cromwell D. Enage ::boost::is_base_of< ::boost::parameter::aux::tagged_argument_base , typename ::boost::remove_const< @@ -40,5 +47,35 @@ namespace boost { namespace parameter { namespace aux { }; }}} // namespace boost::parameter::aux +#else // no perfect forwarding support and no exponential overloads + +#include +#include + +namespace boost { namespace parameter { namespace aux { + + template + struct is_tagged_argument_aux + : ::boost::is_convertible< + T* + , ::boost::parameter::aux::tagged_argument_base const* + > + { + }; + + // This metafunction identifies tagged_argument specializations + // and their derived classes. + template + struct is_tagged_argument + : ::boost::mpl::if_< + ::boost::is_lvalue_reference + , ::boost::mpl::false_ + , ::boost::parameter::aux::is_tagged_argument_aux + >::type + { + }; +}}} // namespace boost::parameter::aux + +#endif // perfect forwarding support, or exponential overloads #endif // include guard diff --git a/include/boost/parameter/aux_/pack/make_arg_list.hpp b/include/boost/parameter/aux_/pack/make_arg_list.hpp index 17eb0ed..d80e3f4 100755 --- a/include/boost/parameter/aux_/pack/make_arg_list.hpp +++ b/include/boost/parameter/aux_/pack/make_arg_list.hpp @@ -28,6 +28,7 @@ namespace boost { namespace parameter { namespace aux { #include #include #include +#include #include #include #include @@ -37,8 +38,6 @@ namespace boost { namespace parameter { namespace aux { #include #include #include -#include -#include namespace boost { namespace parameter { namespace aux { diff --git a/include/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp b/include/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp new file mode 100755 index 0000000..1868ce1 --- /dev/null +++ b/include/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp @@ -0,0 +1,61 @@ +// Copyright David Abrahams, Daniel Wallin 2003. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PACK_TAG_KEYWORD_ARG_REF_HPP +#define BOOST_PARAMETER_AUX_PACK_TAG_KEYWORD_ARG_REF_HPP + +#include +#include + +namespace boost { namespace parameter { namespace aux { + + template < + typename Keyword + , typename ActualArg +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + , typename = typename ::boost::parameter::aux + ::is_cv_reference_wrapper::type +#endif + > + struct tag_ref + { + typedef ::boost::parameter::aux::tagged_argument< + Keyword + , typename ::boost::parameter::aux + ::unwrap_cv_reference::type + > type; + }; +}}} // namespace boost::parameter::aux_ + +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + +#include + +namespace boost { namespace parameter { namespace aux { + + template + struct tag_ref + { + typedef ::boost::parameter::aux + ::tagged_argument type; + }; +}}} // namespace boost::parameter::aux_ + +#endif // Borland workarounds needed. + +namespace boost { namespace parameter { namespace aux { + + struct tag_keyword_arg_ref + { + template + struct apply + { + typedef typename ::boost::parameter::aux::tag_ref::type type; + }; + }; +}}} // namespace boost::parameter::aux + +#endif // include guard + diff --git a/include/boost/parameter/aux_/pp_impl/argument_pack.hpp b/include/boost/parameter/aux_/pp_impl/argument_pack.hpp index 9655818..604009b 100755 --- a/include/boost/parameter/aux_/pp_impl/argument_pack.hpp +++ b/include/boost/parameter/aux_/pp_impl/argument_pack.hpp @@ -9,9 +9,13 @@ #include #include -#include +#include #include +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +#include + namespace boost { namespace parameter { namespace aux { template @@ -30,5 +34,43 @@ namespace boost { namespace parameter { namespace aux { }; }}} // namespace boost::parameter::aux +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +#include +#include +#include +#include +#include + +namespace boost { namespace parameter { namespace aux { + + template < + typename Parameters + BOOST_PP_ENUM_TRAILING_BINARY_PARAMS( + BOOST_PARAMETER_MAX_ARITY + , typename A + , = ::boost::parameter::void_ BOOST_PP_INTERCEPT + ) + > + struct argument_pack + { + typedef typename ::boost::parameter::aux::make_arg_list< + typename BOOST_PARAMETER_build_arg_list( + BOOST_PARAMETER_MAX_ARITY + , ::boost::parameter::aux::make_items + , typename Parameters::parameter_spec + , A + )::type + , typename Parameters::deduced_list + , ::boost::parameter::aux::tag_keyword_arg + , ::boost::mpl::false_ + >::type result; + typedef typename ::boost::mpl::first::type type; + }; +}}} // namespace boost::parameter::aux + +#include + +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING #endif // include guard diff --git a/include/boost/parameter/aux_/pp_impl/match.hpp b/include/boost/parameter/aux_/pp_impl/match.hpp index 1a719e1..a903975 100755 --- a/include/boost/parameter/aux_/pp_impl/match.hpp +++ b/include/boost/parameter/aux_/pp_impl/match.hpp @@ -9,10 +9,13 @@ #include +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + namespace boost { namespace parameter { namespace aux { // Recast the ParameterSpec's nested match metafunction // as a free metafunction. + // // No more limits set by BOOST_PARAMETER_MAX_ARITY. -- Cromwell D. Enage template struct match : Parameters::BOOST_NESTED_TEMPLATE match @@ -20,5 +23,33 @@ namespace boost { namespace parameter { namespace aux { }; }}} // namespace boost::parameter::aux +#else + +#include +#include +#include +#include + +namespace boost { namespace parameter { namespace aux { + + // Recast the ParameterSpec's nested match metafunction + // as a free metafunction. + template < + typename Parameters + BOOST_PP_ENUM_TRAILING_BINARY_PARAMS( + BOOST_PARAMETER_MAX_ARITY + , typename A + , = ::boost::parameter::void_ BOOST_PP_INTERCEPT + ) + > + struct match + : Parameters::BOOST_NESTED_TEMPLATE match< + BOOST_PP_ENUM_PARAMS(BOOST_PARAMETER_MAX_ARITY, A) + > + { + }; +}}} // namespace boost::parameter::aux + +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING #endif // include guard diff --git a/include/boost/parameter/aux_/pp_impl/unwrap_predicate.hpp b/include/boost/parameter/aux_/pp_impl/unwrap_predicate.hpp index dcefc35..8306434 100755 --- a/include/boost/parameter/aux_/pp_impl/unwrap_predicate.hpp +++ b/include/boost/parameter/aux_/pp_impl/unwrap_predicate.hpp @@ -27,8 +27,7 @@ namespace boost { namespace parameter { namespace aux { }; }}} // namespace boost::parameter::aux -#include -#include +#include #if BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x580)) #include diff --git a/include/boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp b/include/boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp new file mode 100755 index 0000000..700d918 --- /dev/null +++ b/include/boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp @@ -0,0 +1,1638 @@ +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_BINARY_SEQ_FOR_EACH_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_BINARY_SEQ_FOR_EACH_HPP + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_0(macro, data) +/**/ + +#include +#include +#include + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_1(macro, data) \ + BOOST_PP_FOR( \ + (data)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_2 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_2(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_3 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_3(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_4 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_4(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_5 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_5(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_6 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_6(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_7 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_7(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_8 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_8(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_9 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_2_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_9 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_2_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_9(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_10 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_3_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_10 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_3_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_10 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_3_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_10 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_3_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_10(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_11(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_12(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_13(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N \ + , macro \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_14(macro, data) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(1)(0)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(0)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(0)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(0)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(0)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(0)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(0)(1)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) \ + BOOST_PP_FOR( \ + (data)(1)(1)(1)(1)(1)(1)(1)(0)(0)(0)(0)(0)(0)(0) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15 \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N \ + , macro \ + ) +/**/ + +#include +#include + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH(n, seq) \ + BOOST_PP_CAT(BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_, n)( \ + BOOST_PP_SEQ_ELEM(0, seq), BOOST_PP_SEQ_ELEM(1, seq) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_Z(z, n, seq) \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH(n, seq) +/**/ + +#endif // include guard + diff --git a/include/boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp b/include/boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp new file mode 100755 index 0000000..7e97546 --- /dev/null +++ b/include/boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp @@ -0,0 +1,1796 @@ +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_BINARY_SEQ_FOR_EACH_INC_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_BINARY_SEQ_FOR_EACH_INC_HPP + +#include +#include +#include + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_1_N(r, seq) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_TAIL(seq)) \ + , BOOST_PP_SEQ_HEAD(seq) \ + ) +/**/ + +#include +#include +#include + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_2_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(2, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(2, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_3_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(3, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(3, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_4_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(4, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(4, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_5_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(5, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(5, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_6_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(6, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(6, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_7_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(7, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(7, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_8_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(8, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(8, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_9_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(9, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(9, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_10_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(10, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(10, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_11_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(11, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(11, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_12_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(12, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(12, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_13_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(13, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(13, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_14_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(14, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(14, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_15_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(15, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(15, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_16_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(16, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(16, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_17_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(17, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(17, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_18_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(18, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(18, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_19_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(19, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(19, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_20_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(20, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(20, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_21_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(21, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(21, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_22_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(22, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(22, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_23_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(23, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(23, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_24_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(24, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(24, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_25_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(25, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(25, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_26_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(26, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(26, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_27_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(27, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(27, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_28_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(28, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(28, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_29_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(29, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(29, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_30_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(30, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(30, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_31_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(31, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(31, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_32_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(32, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(32, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_33_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(33, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(33, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_34_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(34, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(34, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_35_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(35, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(35, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_36_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(36, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(36, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_37_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(37, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(37, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_38_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(38, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(38, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_39_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(39, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(39, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_40_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(40, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(40, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_41_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(41, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(41, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_42_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(42, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(42, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_43_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(43, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(43, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_44_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(44, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(44, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_45_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(45, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(45, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_46_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(46, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(46, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_47_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(47, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(47, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_48_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(48, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(48, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_49_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(49, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(49, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_50_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(50, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(50, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_51_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(51, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(51, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_52_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(52, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(52, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_53_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(53, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(53, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_54_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(54, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(54, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_55_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(55, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(55, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_56_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(56, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(56, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_57_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(57, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(57, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_58_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(58, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(58, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_59_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(59, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(59, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_60_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(60, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(60, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_61_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(61, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(61, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_62_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(62, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(62, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_63_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(63, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(63, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_64_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(64, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(64, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_65_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(65, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(65, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_66_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(66, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(66, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_67_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(67, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(67, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_68_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(68, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(68, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_69_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(69, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(69, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_70_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(70, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(70, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_71_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(71, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(71, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_72_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(72, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(72, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_73_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(73, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(73, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_74_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(74, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(74, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_75_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(75, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(75, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_76_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(76, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(76, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_77_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(77, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(77, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_78_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(78, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(78, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_79_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(79, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(79, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_80_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(80, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(80, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_81_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(81, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(81, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_82_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(82, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(82, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_83_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(83, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(83, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_84_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(84, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(84, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_85_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(85, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(85, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_86_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(86, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(86, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_87_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(87, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(87, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_88_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(88, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(88, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_89_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(89, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(89, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_90_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(90, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(90, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_91_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(91, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(91, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_92_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(92, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(92, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_93_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(93, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(93, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_94_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(94, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(94, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_95_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(95, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(95, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_96_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(96, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(96, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_97_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(97, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(97, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_98_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(98, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(98, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_99_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(99, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(99, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_100_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(100, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(100, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_101_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(101, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(101, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_102_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(102, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(102, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_103_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(103, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(103, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_104_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(104, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(104, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_105_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(105, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(105, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_106_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(106, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(106, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_107_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(107, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(107, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_108_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(108, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(108, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_109_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(109, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(109, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_110_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(110, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(110, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_111_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(111, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(111, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_112_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(112, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(112, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_113_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(113, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(113, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_114_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(114, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(114, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_115_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(115, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(115, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_116_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(116, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(116, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_117_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(117, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(117, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_118_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(118, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(118, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_119_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(119, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(119, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_120_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(120, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(120, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_121_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(121, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(121, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_122_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(122, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(122, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_123_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(123, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(123, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_124_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(124, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(124, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_125_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(125, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(125, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_126_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(126, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(126, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_127_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(127, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(127, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_128_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(128, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(128, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_129_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(129, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(129, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_130_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(130, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(130, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_131_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(131, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(131, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_132_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(132, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(132, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_133_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(133, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(133, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_134_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(134, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(134, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_135_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(135, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(135, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_136_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(136, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(136, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_137_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(137, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(137, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_138_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(138, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(138, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_139_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(139, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(139, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_140_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(140, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(140, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_141_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(11, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(141, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_142_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(142, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(142, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_143_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(143, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(143, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_144_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(144, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(144, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_145_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(145, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(145, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_146_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(146, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(146, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_147_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(147, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(147, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_148_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(148, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(148, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_149_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(149, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(149, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_150_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(150, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(150, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_151_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(151, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(151, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_152_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(152, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(152, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_153_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(153, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(153, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_154_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(154, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(154, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_155_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(155, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(155, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_156_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(156, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(156, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_157_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(157, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(157, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_158_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(158, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(158, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_159_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(159, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(159, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_160_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(160, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(160, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_161_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(161, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(161, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_162_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(162, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(162, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_163_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(163, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(163, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_164_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(164, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(164, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_165_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(165, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(165, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_166_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(166, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(166, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_167_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(167, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(167, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_168_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(168, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(168, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_169_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(169, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(169, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_170_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(170, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(170, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_171_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(171, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(171, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_172_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(172, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(172, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_173_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(173, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(173, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_174_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(174, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(174, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_175_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(175, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(175, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_176_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(176, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(176, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_177_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(177, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(177, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_178_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(178, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(178, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_179_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(179, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(179, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_180_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(180, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(180, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_181_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(181, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(181, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_182_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(182, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(182, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_183_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(183, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(183, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_184_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(184, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(184, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_185_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(185, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(185, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_186_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(186, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(186, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_187_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(187, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(187, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_188_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(188, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(188, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_189_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(189, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(189, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_190_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(190, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(190, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_191_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(191, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(191, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_192_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(192, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(192, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_193_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(193, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(193, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_194_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(194, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(194, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_195_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(195, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(195, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_196_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(196, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(196, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_197_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(197, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(197, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_198_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(198, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(198, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_199_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(199, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(199, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_200_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(200, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(200, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_201_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(201, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(201, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_202_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(202, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(202, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_203_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(203, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(203, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_204_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(204, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(204, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_205_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(205, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(205, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_206_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(206, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(206, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_207_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(207, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(207, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_208_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(208, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(208, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_209_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(209, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(209, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_210_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(210, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(210, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_211_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(211, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(211, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_212_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(212, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(212, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_213_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(213, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(213, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_214_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(214, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(214, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_215_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(215, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(215, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_216_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(216, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(216, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_217_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(217, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(217, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_218_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(218, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(218, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_219_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(219, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(219, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_220_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(220, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(220, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_221_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(221, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(221, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_222_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(222, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(222, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_223_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(223, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(223, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_224_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(224, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(224, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_225_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(225, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(225, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_226_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(226, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(226, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_227_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(227, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(227, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_228_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(228, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(228, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_229_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(229, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(229, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_230_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(230, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(230, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_231_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(231, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(231, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_232_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(232, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(232, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_233_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(233, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(233, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_234_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(234, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(234, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_235_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(235, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(235, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_236_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(236, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(236, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_237_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(237, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(237, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_238_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(238, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(238, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_239_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(239, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(239, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_240_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(240, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(240, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_241_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(241, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(241, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_242_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(242, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(242, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_243_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(243, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(243, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_244_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(244, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(244, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_245_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(245, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(245, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_246_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(246, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(246, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_247_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(247, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(247, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_248_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(248, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(248, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_249_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(249, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(249, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_250_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(250, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(250, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_251_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(251, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(251, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_252_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(252, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(252, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_253_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(253, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(253, seq)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_INC_254_N(r, seq) \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE( \ + BOOST_PP_SEQ_FIRST_N(254, seq) \ + , BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(BOOST_PP_SEQ_REST_N(254, seq)) \ + ) +/**/ + +#endif // include guard + diff --git a/include/boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp b/include/boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp new file mode 100755 index 0000000..4b4ca62 --- /dev/null +++ b/include/boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp @@ -0,0 +1,65 @@ +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_BINARY_SEQ_TO_ARGS_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_BINARY_SEQ_TO_ARGS_HPP + +#include +#include + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_0_1(n, prefix_seq) \ + BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(0, prefix_seq), n) const& +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_1_1(n, prefix_seq) \ + BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(0, prefix_seq), n)& +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_0_2(n, prefix_seq) \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_0_1(n, prefix_seq) \ + BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(1, prefix_seq), n) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_1_2(n, prefix_seq) \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_1_1(n, prefix_seq) \ + BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(1, prefix_seq), n) +/**/ + +#include + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_0(prefix_seq) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_0_ \ + , BOOST_PP_SEQ_SIZE(prefix_seq) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_1(prefix_seq) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_1_ \ + , BOOST_PP_SEQ_SIZE(prefix_seq) \ + ) +/**/ + +#include + +// This macro converts the specified Boost.Preprocessor sequence of 1s and 0s +// into a formal function parameter list. +// +// Example: +// BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARGS((1)(0)(1)(0), (P)(p)) +// expands to +// P0 & p0, P1 const& p1, P2 & p2, P3 const& p3 +#define BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARGS(binary_seq, prefix_seq) \ + BOOST_PARAMETER_AUX_PP_CONVERT_BINARY_SEQ( \ + binary_seq \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_0(prefix_seq) \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARG_1(prefix_seq) \ + , prefix_seq \ + ) +/**/ + +#endif // include guard + diff --git a/include/boost/parameter/aux_/preprocessor/convert_binary_seq.hpp b/include/boost/parameter/aux_/preprocessor/convert_binary_seq.hpp new file mode 100755 index 0000000..64832b3 --- /dev/null +++ b/include/boost/parameter/aux_/preprocessor/convert_binary_seq.hpp @@ -0,0 +1,57 @@ +// Copyright Cromwell D. Enage 2013. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_CONVERT_BINARY_SEQ_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_CONVERT_BINARY_SEQ_HPP + +#include +#include + +#define BOOST_PARAMETER_AUX_PP_AUGMENT_BINARY_SEQ_INDEX_FOLD_OP(s, seq, idx) \ + BOOST_PP_SEQ_PUSH_BACK(seq, (idx, BOOST_PP_SEQ_SIZE(seq))) +/**/ + +#include +#include +#include + +#define BOOST_PARAMETER_AUX_PP_CONVERT_BINARY_SEQ_FOLD_OP(s, seq, elem) \ + ( \ + BOOST_PP_SEQ_PUSH_BACK( \ + BOOST_PP_SEQ_ELEM(0, seq) \ + , BOOST_PP_IIF( \ + BOOST_PP_TUPLE_ELEM(2, 0, elem) \ + , BOOST_PP_SEQ_ELEM(2, seq) \ + , BOOST_PP_SEQ_ELEM(1, seq) \ + )(BOOST_PP_TUPLE_ELEM(2, 1, elem), BOOST_PP_SEQ_ELEM(3, seq)) \ + ) \ + )(BOOST_PP_SEQ_ELEM(1, seq))(BOOST_PP_SEQ_ELEM(2, seq)) \ + (BOOST_PP_SEQ_ELEM(3, seq)) +/**/ + +#include +#include +#include +#include + +#define BOOST_PARAMETER_AUX_PP_CONVERT_BINARY_SEQ(seq, macro0, macro1, data) \ + BOOST_PARAMETER_SEQ_ENUM( \ + BOOST_PP_SEQ_ELEM( \ + 0 \ + , BOOST_PP_SEQ_FOLD_LEFT( \ + BOOST_PARAMETER_AUX_PP_CONVERT_BINARY_SEQ_FOLD_OP \ + , (BOOST_PP_SEQ_NIL)(macro0)(macro1)(data) \ + , BOOST_PP_SEQ_FOLD_LEFT( \ + BOOST_PARAMETER_AUX_PP_AUGMENT_BINARY_SEQ_INDEX_FOLD_OP \ + , BOOST_PP_EMPTY() \ + , seq \ + ) \ + ) \ + ) \ + ) +/**/ + +#endif // include guard + diff --git a/include/boost/parameter/aux_/preprocessor/for_each.hpp b/include/boost/parameter/aux_/preprocessor/for_each.hpp old mode 100644 new mode 100755 index 0eb1f70..221f45a --- a/include/boost/parameter/aux_/preprocessor/for_each.hpp +++ b/include/boost/parameter/aux_/preprocessor/for_each.hpp @@ -1,103 +1,12 @@ -// Copyright Daniel Wallin 2005. Use, modification and distribution is -// subject to the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// Copyright Daniel Wallin 2005. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PARAMETER_FOR_EACH_051217_HPP -# define BOOST_PARAMETER_FOR_EACH_051217_HPP +#define BOOST_PARAMETER_FOR_EACH_051217_HPP -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include +#include -# define BOOST_PARAMETER_FOR_EACH_head_aux2(x,y) (x,y), ~ -# define BOOST_PARAMETER_FOR_EACH_head_aux3(x,y,z) (x,y,z), ~ -# define BOOST_PARAMETER_FOR_EACH_head_aux4(x,y,z,u) (x,y,z,u), ~ -# define BOOST_PARAMETER_FOR_EACH_head(n,x) \ - BOOST_PP_SPLIT(0, BOOST_PP_CAT(BOOST_PARAMETER_FOR_EACH_head_aux,n) x) - -# define BOOST_PARAMETER_FOR_EACH_pred_aux_BOOST_PARAMETER_FOR_EACH_END_SENTINEL -# define BOOST_PARAMETER_FOR_EACH_pred_aux_check(x) \ - BOOST_PP_NOT(BOOST_PP_IS_EMPTY( \ - BOOST_PP_CAT(BOOST_PARAMETER_FOR_EACH_pred_aux_, x) \ - )), ~ - -# define BOOST_PARAMETER_FOR_EACH_pred_aux2(x,y) \ - BOOST_PARAMETER_FOR_EACH_pred_aux_check(x) -# define BOOST_PARAMETER_FOR_EACH_pred_aux3(x,y,z) \ - BOOST_PARAMETER_FOR_EACH_pred_aux_check(x) -# define BOOST_PARAMETER_FOR_EACH_pred_aux4(x,y,z,u) \ - BOOST_PARAMETER_FOR_EACH_pred_aux_check(x) - -# define BOOST_PARAMETER_FOR_EACH_pred_aux0(n,x) \ - BOOST_PP_CAT(BOOST_PARAMETER_FOR_EACH_pred_aux,n) x - -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() -# define BOOST_PARAMETER_FOR_EACH_pred_SPLIT_FIRST(x) \ - BOOST_PP_SPLIT(0, x) - -# define BOOST_PARAMETER_FOR_EACH_pred(r, state) \ - BOOST_PARAMETER_FOR_EACH_pred_SPLIT_FIRST( \ - BOOST_PARAMETER_FOR_EACH_pred_aux0( \ - BOOST_PP_TUPLE_ELEM(5,3,state) \ - , BOOST_PP_TUPLE_ELEM(5,0,state) \ - ) \ - ) -# else -# define BOOST_PARAMETER_FOR_EACH_pred(r, state) \ - BOOST_PP_SPLIT( \ - 0 \ - , BOOST_PARAMETER_FOR_EACH_pred_aux0( \ - BOOST_PP_TUPLE_ELEM(5,3,state) \ - , BOOST_PP_TUPLE_ELEM(5,0,state) \ - ) \ - ) -# endif - -# define BOOST_PARAMETER_FOR_EACH_op(r, state) \ - ( \ - BOOST_PP_TUPLE_EAT(BOOST_PP_TUPLE_ELEM(5,3,state)) \ - BOOST_PP_TUPLE_ELEM(5,0,state) \ - , BOOST_PP_TUPLE_ELEM(5,1,state) \ - , BOOST_PP_TUPLE_ELEM(5,2,state) \ - , BOOST_PP_TUPLE_ELEM(5,3,state) \ - , BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(5,4,state)) \ - ) - -# define BOOST_PARAMETER_FOR_EACH_macro(r, state) \ - BOOST_PP_TUPLE_ELEM(5,2,state)( \ - r \ - , BOOST_PP_TUPLE_ELEM(5,4,state) \ - , BOOST_PARAMETER_FOR_EACH_head( \ - BOOST_PP_TUPLE_ELEM(5,3,state) \ - , BOOST_PP_TUPLE_ELEM(5,0,state) \ - ) \ - , BOOST_PP_TUPLE_ELEM(5,1,state) \ - ) - -# define BOOST_PARAMETER_FOR_EACH_build_end_sentinel(z,n,text) \ - BOOST_PP_COMMA_IF(n) BOOST_PARAMETER_FOR_EACH_END_SENTINEL -# define BOOST_PARAMETER_FOR_EACH_build_end_sentinel_tuple(arity) \ - ( \ - BOOST_PP_REPEAT(arity, BOOST_PARAMETER_FOR_EACH_build_end_sentinel, _) \ - ) - -# define BOOST_PARAMETER_FOR_EACH_R(r, arity, list, data, macro) \ - BOOST_PP_CAT(BOOST_PP_FOR_, r)( \ - (list BOOST_PARAMETER_FOR_EACH_build_end_sentinel_tuple(arity), data, macro, arity, 0) \ - , BOOST_PARAMETER_FOR_EACH_pred \ - , BOOST_PARAMETER_FOR_EACH_op \ - , BOOST_PARAMETER_FOR_EACH_macro \ - ) - -# define BOOST_PARAMETER_FOR_EACH(arity, list, data, macro) \ - BOOST_PARAMETER_FOR_EACH_R(BOOST_PP_DEDUCE_R(), arity, list, data, macro) - -#endif // BOOST_PARAMETER_FOR_EACH_051217_HPP +#endif // include guard diff --git a/include/boost/parameter/aux_/preprocessor/for_each_pred.hpp b/include/boost/parameter/aux_/preprocessor/for_each_pred.hpp new file mode 100755 index 0000000..7d4c636 --- /dev/null +++ b/include/boost/parameter/aux_/preprocessor/for_each_pred.hpp @@ -0,0 +1,1029 @@ +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_FOR_EACH_PRED_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_FOR_EACH_PRED_HPP + +#include +#include + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_1(r, seq) \ + BOOST_PP_NOT_EQUAL(2, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_2(r, seq) \ + BOOST_PP_NOT_EQUAL(3, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_3(r, seq) \ + BOOST_PP_NOT_EQUAL(4, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_4(r, seq) \ + BOOST_PP_NOT_EQUAL(5, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_5(r, seq) \ + BOOST_PP_NOT_EQUAL(6, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_6(r, seq) \ + BOOST_PP_NOT_EQUAL(7, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_7(r, seq) \ + BOOST_PP_NOT_EQUAL(8, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_8(r, seq) \ + BOOST_PP_NOT_EQUAL(9, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_9(r, seq) \ + BOOST_PP_NOT_EQUAL(10, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_10(r, seq) \ + BOOST_PP_NOT_EQUAL(11, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_11(r, seq) \ + BOOST_PP_NOT_EQUAL(12, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_12(r, seq) \ + BOOST_PP_NOT_EQUAL(13, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_13(r, seq) \ + BOOST_PP_NOT_EQUAL(14, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_14(r, seq) \ + BOOST_PP_NOT_EQUAL(15, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_15(r, seq) \ + BOOST_PP_NOT_EQUAL(16, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_16(r, seq) \ + BOOST_PP_NOT_EQUAL(17, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_17(r, seq) \ + BOOST_PP_NOT_EQUAL(18, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_18(r, seq) \ + BOOST_PP_NOT_EQUAL(19, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_19(r, seq) \ + BOOST_PP_NOT_EQUAL(20, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_20(r, seq) \ + BOOST_PP_NOT_EQUAL(21, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_21(r, seq) \ + BOOST_PP_NOT_EQUAL(22, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_22(r, seq) \ + BOOST_PP_NOT_EQUAL(23, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_23(r, seq) \ + BOOST_PP_NOT_EQUAL(24, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_24(r, seq) \ + BOOST_PP_NOT_EQUAL(25, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_25(r, seq) \ + BOOST_PP_NOT_EQUAL(26, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_26(r, seq) \ + BOOST_PP_NOT_EQUAL(27, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_27(r, seq) \ + BOOST_PP_NOT_EQUAL(28, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_28(r, seq) \ + BOOST_PP_NOT_EQUAL(29, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_29(r, seq) \ + BOOST_PP_NOT_EQUAL(30, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_30(r, seq) \ + BOOST_PP_NOT_EQUAL(31, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_31(r, seq) \ + BOOST_PP_NOT_EQUAL(32, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_32(r, seq) \ + BOOST_PP_NOT_EQUAL(33, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_33(r, seq) \ + BOOST_PP_NOT_EQUAL(34, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_34(r, seq) \ + BOOST_PP_NOT_EQUAL(35, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_35(r, seq) \ + BOOST_PP_NOT_EQUAL(36, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_36(r, seq) \ + BOOST_PP_NOT_EQUAL(37, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_37(r, seq) \ + BOOST_PP_NOT_EQUAL(38, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_38(r, seq) \ + BOOST_PP_NOT_EQUAL(39, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_39(r, seq) \ + BOOST_PP_NOT_EQUAL(40, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_40(r, seq) \ + BOOST_PP_NOT_EQUAL(41, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_41(r, seq) \ + BOOST_PP_NOT_EQUAL(42, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_42(r, seq) \ + BOOST_PP_NOT_EQUAL(43, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_43(r, seq) \ + BOOST_PP_NOT_EQUAL(44, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_44(r, seq) \ + BOOST_PP_NOT_EQUAL(45, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_45(r, seq) \ + BOOST_PP_NOT_EQUAL(46, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_46(r, seq) \ + BOOST_PP_NOT_EQUAL(47, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_47(r, seq) \ + BOOST_PP_NOT_EQUAL(48, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_48(r, seq) \ + BOOST_PP_NOT_EQUAL(49, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_49(r, seq) \ + BOOST_PP_NOT_EQUAL(50, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_50(r, seq) \ + BOOST_PP_NOT_EQUAL(51, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_51(r, seq) \ + BOOST_PP_NOT_EQUAL(52, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_52(r, seq) \ + BOOST_PP_NOT_EQUAL(53, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_53(r, seq) \ + BOOST_PP_NOT_EQUAL(54, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_54(r, seq) \ + BOOST_PP_NOT_EQUAL(55, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_55(r, seq) \ + BOOST_PP_NOT_EQUAL(56, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_56(r, seq) \ + BOOST_PP_NOT_EQUAL(57, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_57(r, seq) \ + BOOST_PP_NOT_EQUAL(58, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_58(r, seq) \ + BOOST_PP_NOT_EQUAL(59, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_59(r, seq) \ + BOOST_PP_NOT_EQUAL(60, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_60(r, seq) \ + BOOST_PP_NOT_EQUAL(61, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_61(r, seq) \ + BOOST_PP_NOT_EQUAL(62, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_62(r, seq) \ + BOOST_PP_NOT_EQUAL(63, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_63(r, seq) \ + BOOST_PP_NOT_EQUAL(64, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_64(r, seq) \ + BOOST_PP_NOT_EQUAL(65, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_65(r, seq) \ + BOOST_PP_NOT_EQUAL(66, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_66(r, seq) \ + BOOST_PP_NOT_EQUAL(67, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_67(r, seq) \ + BOOST_PP_NOT_EQUAL(68, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_68(r, seq) \ + BOOST_PP_NOT_EQUAL(69, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_69(r, seq) \ + BOOST_PP_NOT_EQUAL(70, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_70(r, seq) \ + BOOST_PP_NOT_EQUAL(71, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_71(r, seq) \ + BOOST_PP_NOT_EQUAL(72, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_72(r, seq) \ + BOOST_PP_NOT_EQUAL(73, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_73(r, seq) \ + BOOST_PP_NOT_EQUAL(74, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_74(r, seq) \ + BOOST_PP_NOT_EQUAL(75, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_75(r, seq) \ + BOOST_PP_NOT_EQUAL(76, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_76(r, seq) \ + BOOST_PP_NOT_EQUAL(77, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_77(r, seq) \ + BOOST_PP_NOT_EQUAL(78, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_78(r, seq) \ + BOOST_PP_NOT_EQUAL(79, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_79(r, seq) \ + BOOST_PP_NOT_EQUAL(80, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_80(r, seq) \ + BOOST_PP_NOT_EQUAL(81, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_81(r, seq) \ + BOOST_PP_NOT_EQUAL(82, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_82(r, seq) \ + BOOST_PP_NOT_EQUAL(83, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_83(r, seq) \ + BOOST_PP_NOT_EQUAL(84, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_84(r, seq) \ + BOOST_PP_NOT_EQUAL(85, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_85(r, seq) \ + BOOST_PP_NOT_EQUAL(86, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_86(r, seq) \ + BOOST_PP_NOT_EQUAL(87, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_87(r, seq) \ + BOOST_PP_NOT_EQUAL(88, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_88(r, seq) \ + BOOST_PP_NOT_EQUAL(89, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_89(r, seq) \ + BOOST_PP_NOT_EQUAL(90, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_90(r, seq) \ + BOOST_PP_NOT_EQUAL(91, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_91(r, seq) \ + BOOST_PP_NOT_EQUAL(92, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_92(r, seq) \ + BOOST_PP_NOT_EQUAL(93, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_93(r, seq) \ + BOOST_PP_NOT_EQUAL(94, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_94(r, seq) \ + BOOST_PP_NOT_EQUAL(95, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_95(r, seq) \ + BOOST_PP_NOT_EQUAL(96, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_96(r, seq) \ + BOOST_PP_NOT_EQUAL(97, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_97(r, seq) \ + BOOST_PP_NOT_EQUAL(98, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_98(r, seq) \ + BOOST_PP_NOT_EQUAL(99, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_99(r, seq) \ + BOOST_PP_NOT_EQUAL(100, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_100(r, seq) \ + BOOST_PP_NOT_EQUAL(101, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_101(r, seq) \ + BOOST_PP_NOT_EQUAL(102, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_102(r, seq) \ + BOOST_PP_NOT_EQUAL(103, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_103(r, seq) \ + BOOST_PP_NOT_EQUAL(104, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_104(r, seq) \ + BOOST_PP_NOT_EQUAL(105, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_105(r, seq) \ + BOOST_PP_NOT_EQUAL(106, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_106(r, seq) \ + BOOST_PP_NOT_EQUAL(107, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_107(r, seq) \ + BOOST_PP_NOT_EQUAL(108, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_108(r, seq) \ + BOOST_PP_NOT_EQUAL(109, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_109(r, seq) \ + BOOST_PP_NOT_EQUAL(110, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_110(r, seq) \ + BOOST_PP_NOT_EQUAL(111, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_111(r, seq) \ + BOOST_PP_NOT_EQUAL(112, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_112(r, seq) \ + BOOST_PP_NOT_EQUAL(113, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_113(r, seq) \ + BOOST_PP_NOT_EQUAL(114, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_114(r, seq) \ + BOOST_PP_NOT_EQUAL(115, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_115(r, seq) \ + BOOST_PP_NOT_EQUAL(116, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_116(r, seq) \ + BOOST_PP_NOT_EQUAL(117, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_117(r, seq) \ + BOOST_PP_NOT_EQUAL(118, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_118(r, seq) \ + BOOST_PP_NOT_EQUAL(119, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_119(r, seq) \ + BOOST_PP_NOT_EQUAL(120, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_120(r, seq) \ + BOOST_PP_NOT_EQUAL(121, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_121(r, seq) \ + BOOST_PP_NOT_EQUAL(122, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_122(r, seq) \ + BOOST_PP_NOT_EQUAL(123, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_123(r, seq) \ + BOOST_PP_NOT_EQUAL(124, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_124(r, seq) \ + BOOST_PP_NOT_EQUAL(125, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_125(r, seq) \ + BOOST_PP_NOT_EQUAL(126, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_126(r, seq) \ + BOOST_PP_NOT_EQUAL(127, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_127(r, seq) \ + BOOST_PP_NOT_EQUAL(128, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_128(r, seq) \ + BOOST_PP_NOT_EQUAL(129, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_129(r, seq) \ + BOOST_PP_NOT_EQUAL(130, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_130(r, seq) \ + BOOST_PP_NOT_EQUAL(131, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_131(r, seq) \ + BOOST_PP_NOT_EQUAL(132, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_132(r, seq) \ + BOOST_PP_NOT_EQUAL(133, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_133(r, seq) \ + BOOST_PP_NOT_EQUAL(134, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_134(r, seq) \ + BOOST_PP_NOT_EQUAL(135, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_135(r, seq) \ + BOOST_PP_NOT_EQUAL(136, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_136(r, seq) \ + BOOST_PP_NOT_EQUAL(137, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_137(r, seq) \ + BOOST_PP_NOT_EQUAL(138, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_138(r, seq) \ + BOOST_PP_NOT_EQUAL(139, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_139(r, seq) \ + BOOST_PP_NOT_EQUAL(140, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_140(r, seq) \ + BOOST_PP_NOT_EQUAL(141, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_141(r, seq) \ + BOOST_PP_NOT_EQUAL(142, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_142(r, seq) \ + BOOST_PP_NOT_EQUAL(143, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_143(r, seq) \ + BOOST_PP_NOT_EQUAL(144, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_144(r, seq) \ + BOOST_PP_NOT_EQUAL(145, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_145(r, seq) \ + BOOST_PP_NOT_EQUAL(146, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_146(r, seq) \ + BOOST_PP_NOT_EQUAL(147, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_147(r, seq) \ + BOOST_PP_NOT_EQUAL(148, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_148(r, seq) \ + BOOST_PP_NOT_EQUAL(149, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_149(r, seq) \ + BOOST_PP_NOT_EQUAL(150, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_150(r, seq) \ + BOOST_PP_NOT_EQUAL(151, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_151(r, seq) \ + BOOST_PP_NOT_EQUAL(152, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_152(r, seq) \ + BOOST_PP_NOT_EQUAL(153, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_153(r, seq) \ + BOOST_PP_NOT_EQUAL(154, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_154(r, seq) \ + BOOST_PP_NOT_EQUAL(155, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_155(r, seq) \ + BOOST_PP_NOT_EQUAL(156, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_156(r, seq) \ + BOOST_PP_NOT_EQUAL(157, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_157(r, seq) \ + BOOST_PP_NOT_EQUAL(158, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_158(r, seq) \ + BOOST_PP_NOT_EQUAL(159, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_159(r, seq) \ + BOOST_PP_NOT_EQUAL(160, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_160(r, seq) \ + BOOST_PP_NOT_EQUAL(161, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_161(r, seq) \ + BOOST_PP_NOT_EQUAL(162, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_162(r, seq) \ + BOOST_PP_NOT_EQUAL(163, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_163(r, seq) \ + BOOST_PP_NOT_EQUAL(164, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_164(r, seq) \ + BOOST_PP_NOT_EQUAL(165, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_165(r, seq) \ + BOOST_PP_NOT_EQUAL(166, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_166(r, seq) \ + BOOST_PP_NOT_EQUAL(167, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_167(r, seq) \ + BOOST_PP_NOT_EQUAL(168, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_168(r, seq) \ + BOOST_PP_NOT_EQUAL(169, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_169(r, seq) \ + BOOST_PP_NOT_EQUAL(170, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_170(r, seq) \ + BOOST_PP_NOT_EQUAL(171, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_171(r, seq) \ + BOOST_PP_NOT_EQUAL(172, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_172(r, seq) \ + BOOST_PP_NOT_EQUAL(173, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_173(r, seq) \ + BOOST_PP_NOT_EQUAL(174, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_174(r, seq) \ + BOOST_PP_NOT_EQUAL(175, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_175(r, seq) \ + BOOST_PP_NOT_EQUAL(176, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_176(r, seq) \ + BOOST_PP_NOT_EQUAL(177, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_177(r, seq) \ + BOOST_PP_NOT_EQUAL(178, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_178(r, seq) \ + BOOST_PP_NOT_EQUAL(179, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_179(r, seq) \ + BOOST_PP_NOT_EQUAL(180, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_180(r, seq) \ + BOOST_PP_NOT_EQUAL(181, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_181(r, seq) \ + BOOST_PP_NOT_EQUAL(182, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_182(r, seq) \ + BOOST_PP_NOT_EQUAL(183, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_183(r, seq) \ + BOOST_PP_NOT_EQUAL(184, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_184(r, seq) \ + BOOST_PP_NOT_EQUAL(185, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_185(r, seq) \ + BOOST_PP_NOT_EQUAL(186, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_186(r, seq) \ + BOOST_PP_NOT_EQUAL(187, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_187(r, seq) \ + BOOST_PP_NOT_EQUAL(188, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_188(r, seq) \ + BOOST_PP_NOT_EQUAL(189, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_189(r, seq) \ + BOOST_PP_NOT_EQUAL(190, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_190(r, seq) \ + BOOST_PP_NOT_EQUAL(191, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_191(r, seq) \ + BOOST_PP_NOT_EQUAL(192, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_192(r, seq) \ + BOOST_PP_NOT_EQUAL(193, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_193(r, seq) \ + BOOST_PP_NOT_EQUAL(194, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_194(r, seq) \ + BOOST_PP_NOT_EQUAL(195, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_195(r, seq) \ + BOOST_PP_NOT_EQUAL(196, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_196(r, seq) \ + BOOST_PP_NOT_EQUAL(197, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_197(r, seq) \ + BOOST_PP_NOT_EQUAL(198, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_198(r, seq) \ + BOOST_PP_NOT_EQUAL(199, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_199(r, seq) \ + BOOST_PP_NOT_EQUAL(200, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_200(r, seq) \ + BOOST_PP_NOT_EQUAL(201, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_201(r, seq) \ + BOOST_PP_NOT_EQUAL(202, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_202(r, seq) \ + BOOST_PP_NOT_EQUAL(203, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_203(r, seq) \ + BOOST_PP_NOT_EQUAL(204, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_204(r, seq) \ + BOOST_PP_NOT_EQUAL(205, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_205(r, seq) \ + BOOST_PP_NOT_EQUAL(206, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_206(r, seq) \ + BOOST_PP_NOT_EQUAL(207, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_207(r, seq) \ + BOOST_PP_NOT_EQUAL(208, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_208(r, seq) \ + BOOST_PP_NOT_EQUAL(209, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_209(r, seq) \ + BOOST_PP_NOT_EQUAL(210, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_210(r, seq) \ + BOOST_PP_NOT_EQUAL(211, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_211(r, seq) \ + BOOST_PP_NOT_EQUAL(212, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_212(r, seq) \ + BOOST_PP_NOT_EQUAL(213, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_213(r, seq) \ + BOOST_PP_NOT_EQUAL(214, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_214(r, seq) \ + BOOST_PP_NOT_EQUAL(215, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_215(r, seq) \ + BOOST_PP_NOT_EQUAL(216, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_216(r, seq) \ + BOOST_PP_NOT_EQUAL(217, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_217(r, seq) \ + BOOST_PP_NOT_EQUAL(218, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_218(r, seq) \ + BOOST_PP_NOT_EQUAL(219, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_219(r, seq) \ + BOOST_PP_NOT_EQUAL(220, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_220(r, seq) \ + BOOST_PP_NOT_EQUAL(221, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_221(r, seq) \ + BOOST_PP_NOT_EQUAL(222, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_222(r, seq) \ + BOOST_PP_NOT_EQUAL(223, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_223(r, seq) \ + BOOST_PP_NOT_EQUAL(224, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_224(r, seq) \ + BOOST_PP_NOT_EQUAL(225, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_225(r, seq) \ + BOOST_PP_NOT_EQUAL(226, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_226(r, seq) \ + BOOST_PP_NOT_EQUAL(227, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_227(r, seq) \ + BOOST_PP_NOT_EQUAL(228, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_228(r, seq) \ + BOOST_PP_NOT_EQUAL(229, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_229(r, seq) \ + BOOST_PP_NOT_EQUAL(230, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_230(r, seq) \ + BOOST_PP_NOT_EQUAL(231, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_231(r, seq) \ + BOOST_PP_NOT_EQUAL(232, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_232(r, seq) \ + BOOST_PP_NOT_EQUAL(233, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_233(r, seq) \ + BOOST_PP_NOT_EQUAL(234, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_234(r, seq) \ + BOOST_PP_NOT_EQUAL(235, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_235(r, seq) \ + BOOST_PP_NOT_EQUAL(236, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_236(r, seq) \ + BOOST_PP_NOT_EQUAL(237, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_237(r, seq) \ + BOOST_PP_NOT_EQUAL(238, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_238(r, seq) \ + BOOST_PP_NOT_EQUAL(239, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_239(r, seq) \ + BOOST_PP_NOT_EQUAL(240, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_240(r, seq) \ + BOOST_PP_NOT_EQUAL(241, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_241(r, seq) \ + BOOST_PP_NOT_EQUAL(242, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_242(r, seq) \ + BOOST_PP_NOT_EQUAL(243, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_243(r, seq) \ + BOOST_PP_NOT_EQUAL(244, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_244(r, seq) \ + BOOST_PP_NOT_EQUAL(245, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_245(r, seq) \ + BOOST_PP_NOT_EQUAL(246, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_246(r, seq) \ + BOOST_PP_NOT_EQUAL(247, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_247(r, seq) \ + BOOST_PP_NOT_EQUAL(248, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_248(r, seq) \ + BOOST_PP_NOT_EQUAL(249, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_249(r, seq) \ + BOOST_PP_NOT_EQUAL(250, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_250(r, seq) \ + BOOST_PP_NOT_EQUAL(251, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_251(r, seq) \ + BOOST_PP_NOT_EQUAL(252, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_252(r, seq) \ + BOOST_PP_NOT_EQUAL(253, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_253(r, seq) \ + BOOST_PP_NOT_EQUAL(254, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_PRED_254(r, seq) \ + BOOST_PP_NOT_EQUAL(255, BOOST_PP_SEQ_SIZE(seq)) +/**/ + +#endif // include guard + diff --git a/include/boost/parameter/aux_/preprocessor/impl/flatten.hpp b/include/boost/parameter/aux_/preprocessor/impl/flatten.hpp index 85c8df4..0d23a0c 100755 --- a/include/boost/parameter/aux_/preprocessor/impl/flatten.hpp +++ b/include/boost/parameter/aux_/preprocessor/impl/flatten.hpp @@ -6,111 +6,138 @@ #ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FLATTEN_HPP #define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FLATTEN_HPP -#include -#include +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPLIT_required required, +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPLIT_optional optional, +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPLIT_deduced deduced, +#define BOOST_PARAMETER_AUX_PP_FLATTEN_IDENTITY(x) x +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC0_DUMMY_ELEM(z, n, data) ~ + #include -#include -#include -#include -#include + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPLIT(sub) \ + BOOST_PP_CAT(BOOST_PARAMETER_AUX_PP_FLATTEN_SPLIT_, sub) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_AS_DEDUCED(x) \ + BOOST_PP_CAT(deduced_, x) +/**/ + +#include + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_QUALIFIER(sub) \ + BOOST_PP_SPLIT(0, BOOST_PARAMETER_AUX_PP_FLATTEN_SPLIT(sub)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_ARGS(sub) \ + BOOST_PP_SPLIT(1, BOOST_PARAMETER_AUX_PP_FLATTEN_SPLIT(sub)) +/**/ + +#include + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_ARITY_optional(arities) \ + BOOST_PP_TUPLE_ELEM(3, 0, arities) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_ARITY_required(arities) \ + BOOST_PP_TUPLE_ELEM(3, 1, arities) +/**/ + #include #include -#include +#include -#define BOOST_PARAMETER_FLATTEN_SPLIT_required required, -#define BOOST_PARAMETER_FLATTEN_SPLIT_optional optional, -#define BOOST_PARAMETER_FLATTEN_SPLIT_deduced deduced, - -#define BOOST_PARAMETER_FLATTEN_SPLIT(sub) \ - BOOST_PP_CAT(BOOST_PARAMETER_FLATTEN_SPLIT_, sub) - -#define BOOST_PARAMETER_FLATTEN_QUALIFIER(sub) \ - BOOST_PP_SPLIT(0, BOOST_PARAMETER_FLATTEN_SPLIT(sub)) - -#define BOOST_PARAMETER_FLATTEN_ARGS(sub) \ - BOOST_PP_SPLIT(1, BOOST_PARAMETER_FLATTEN_SPLIT(sub)) - -#define BOOST_PARAMETER_FLATTEN_ARITY_optional(arities) \ - BOOST_PP_TUPLE_ELEM(3, 0, arities) - -#define BOOST_PARAMETER_FLATTEN_ARITY_required(arities) \ - BOOST_PP_TUPLE_ELEM(3, 1, arities) - -#define BOOST_PARAMETER_FLATTEN_SPEC0_DUMMY_ELEM(z, n, data) ~ -#define BOOST_PARAMETER_FLATTEN_SPEC0(r, n, elem, data) \ - (( \ - BOOST_PP_TUPLE_ELEM(3, 2, data) \ - , BOOST_PP_TUPLE_REM(BOOST_PP_TUPLE_ELEM(3, 0, data)) elem \ - BOOST_PP_ENUM_TRAILING( \ - BOOST_PP_SUB( \ - BOOST_PP_TUPLE_ELEM(3, 1, data) \ - , BOOST_PP_TUPLE_ELEM(3, 0, data) \ - ) \ - , BOOST_PARAMETER_FLATTEN_SPEC0_DUMMY_ELEM \ - , ~ \ - ) \ +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC0(r, n, elem, data) \ + (( \ + BOOST_PP_TUPLE_ELEM(3, 2, data) \ + , BOOST_PP_TUPLE_REM(BOOST_PP_TUPLE_ELEM(3, 0, data)) elem \ + BOOST_PP_ENUM_TRAILING( \ + BOOST_PP_SUB( \ + BOOST_PP_TUPLE_ELEM(3, 1, data) \ + , BOOST_PP_TUPLE_ELEM(3, 0, data) \ + ) \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC0_DUMMY_ELEM \ + , ~ \ + ) \ )) +/**/ -#define BOOST_PARAMETER_FLATTEN_SPEC_AUX(r, arity, max_arity, spec, xform) \ - BOOST_PARAMETER_FOR_EACH_R( \ - r \ - , arity \ - , BOOST_PARAMETER_FLATTEN_ARGS(spec) \ - , (arity, max_arity, xform(BOOST_PARAMETER_FLATTEN_QUALIFIER(spec))) \ - , BOOST_PARAMETER_FLATTEN_SPEC0 \ +#include + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_AUX( \ + r, arity, max_arity, spec, xform \ +) \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_R( \ + r \ + , arity \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_ARGS(spec) \ + , ( \ + arity \ + , max_arity \ + , xform(BOOST_PARAMETER_AUX_PP_FLATTEN_QUALIFIER(spec)) \ + ) \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC0 \ ) +/**/ -#define BOOST_PARAMETER_FLATTEN_IDENTITY(x) x - -#define BOOST_PARAMETER_FLATTEN_SPEC_optional(r, arities, spec) \ - BOOST_PARAMETER_FLATTEN_SPEC_AUX( \ - r \ - , BOOST_PP_CAT( \ - BOOST_PARAMETER_FLATTEN_ARITY_ \ - , BOOST_PARAMETER_FLATTEN_QUALIFIER(spec) \ - )(arities) \ - , BOOST_PP_TUPLE_ELEM(3, 2, arities) \ - , spec \ - , BOOST_PARAMETER_FLATTEN_IDENTITY \ +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_optional(r, arities, spec) \ + BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_AUX( \ + r \ + , BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_FLATTEN_ARITY_ \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_QUALIFIER(spec) \ + )(arities) \ + , BOOST_PP_TUPLE_ELEM(3, 2, arities) \ + , spec \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_IDENTITY \ ) +/**/ -#define BOOST_PARAMETER_FLATTEN_SPEC_required(r, arities, spec) \ - BOOST_PARAMETER_FLATTEN_SPEC_optional(r, arities, spec) +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_required(r, arities, spec) \ + BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_optional(r, arities, spec) +/**/ -#define BOOST_PARAMETER_FLATTEN_SPEC_AS_DEDUCED(x) BOOST_PP_CAT(deduced_, x) - -#define BOOST_PARAMETER_FLATTEN_SPEC_deduced_M(r, arities, n, spec) \ - BOOST_PARAMETER_FLATTEN_SPEC_AUX( \ - r \ - , BOOST_PP_CAT( \ - BOOST_PARAMETER_FLATTEN_ARITY_ \ - , BOOST_PARAMETER_FLATTEN_QUALIFIER(spec) \ - )(arities) \ - , BOOST_PP_TUPLE_ELEM(3, 2, arities) \ - , spec \ - , BOOST_PARAMETER_FLATTEN_SPEC_AS_DEDUCED \ +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_deduced_M(r, arities, n, spec) \ + BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_AUX( \ + r \ + , BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_FLATTEN_ARITY_ \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_QUALIFIER(spec) \ + )(arities) \ + , BOOST_PP_TUPLE_ELEM(3, 2, arities) \ + , spec \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_AS_DEDUCED \ ) +/**/ -#define BOOST_PARAMETER_FLATTEN_SPEC_deduced(r, arities, spec) \ - BOOST_PP_SEQ_FOR_EACH_I_R( \ - r \ - , BOOST_PARAMETER_FLATTEN_SPEC_deduced_M \ - , arities \ - , BOOST_PARAMETER_FLATTEN_ARGS(spec) \ +#include + +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_deduced(r, arities, spec) \ + BOOST_PP_SEQ_FOR_EACH_I_R( \ + r \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_deduced_M \ + , arities \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_ARGS(spec) \ ) +/**/ -#define BOOST_PARAMETER_FLATTEN_SPEC(r, arities, spec) \ - BOOST_PP_CAT( \ - BOOST_PARAMETER_FLATTEN_SPEC_ \ - , BOOST_PARAMETER_FLATTEN_QUALIFIER(spec) \ +#define BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC(r, arities, spec) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC_ \ + , BOOST_PARAMETER_AUX_PP_FLATTEN_QUALIFIER(spec) \ )(r, arities, spec) +/**/ -#define BOOST_PARAMETER_FLATTEN(opt_arity, req_arity, wanted_arity, specs) \ - BOOST_PP_SEQ_FOR_EACH( \ - BOOST_PARAMETER_FLATTEN_SPEC \ - , (opt_arity, req_arity, wanted_arity) \ - , specs \ +#include + +#define BOOST_PARAMETER_AUX_PP_FLATTEN( \ + opt_arity, req_arity, wanted_arity, specs \ +) \ + BOOST_PP_SEQ_FOR_EACH( \ + BOOST_PARAMETER_AUX_PP_FLATTEN_SPEC \ + , (opt_arity, req_arity, wanted_arity) \ + , specs \ ) +/**/ #endif // include guard diff --git a/include/boost/parameter/aux_/preprocessor/impl/for_each.hpp b/include/boost/parameter/aux_/preprocessor/impl/for_each.hpp new file mode 100755 index 0000000..b6ece20 --- /dev/null +++ b/include/boost/parameter/aux_/preprocessor/impl/for_each.hpp @@ -0,0 +1,152 @@ +// Copyright Daniel Wallin 2005. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FOR_EACH_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FOR_EACH_HPP + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_head_aux2(x, y) (x, y), ~ +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_head_aux3(x, y, z) (x, y, z), ~ +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_head_aux4(x, y, z, u) (x, y, z, u), ~ + +#define \ +BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux_BOOST_PARAMETER_AUX_PP_FOR_EACH_END_S +/**/ + +#include + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_SPLIT_FIRST(x) \ + BOOST_PP_SPLIT(0, x) +/**/ + +#include + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_head(n, x) \ + BOOST_PP_SPLIT( \ + 0 \ + , BOOST_PP_CAT(BOOST_PARAMETER_AUX_PP_FOR_EACH_head_aux, n) x \ + ) +/**/ + +#include +#include + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux_check(x) \ + BOOST_PP_NOT(BOOST_PP_IS_EMPTY( \ + BOOST_PP_CAT(BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux_, x) \ + )), ~ +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux2(x, y) \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux_check(x) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux3(x, y, z) \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux_check(x) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux4(x, y, z, u) \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux_check(x) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux0(n, x) \ + BOOST_PP_CAT(BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux, n) x +/**/ + +#include + +#if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred(r, state) \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_SPLIT_FIRST( \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux0( \ + BOOST_PP_TUPLE_ELEM(5, 3, state) \ + , BOOST_PP_TUPLE_ELEM(5, 0, state) \ + ) \ + ) +/**/ + +#else // !(BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()) + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_pred(r, state) \ + BOOST_PP_SPLIT( \ + 0 \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_pred_aux0( \ + BOOST_PP_TUPLE_ELEM(5, 3, state) \ + , BOOST_PP_TUPLE_ELEM(5, 0, state) \ + ) \ + ) +/**/ + +#endif // BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC() + +#include +#include + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_op(r, state) \ + ( \ + BOOST_PP_TUPLE_EAT(BOOST_PP_TUPLE_ELEM(5, 3, state)) \ + BOOST_PP_TUPLE_ELEM(5, 0, state) \ + , BOOST_PP_TUPLE_ELEM(5, 1, state) \ + , BOOST_PP_TUPLE_ELEM(5, 2, state) \ + , BOOST_PP_TUPLE_ELEM(5, 3, state) \ + , BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(5, 4, state)) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_macro(r, state) \ + BOOST_PP_TUPLE_ELEM(5, 2, state)( \ + r \ + , BOOST_PP_TUPLE_ELEM(5, 4, state) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_head( \ + BOOST_PP_TUPLE_ELEM(5, 3, state) \ + , BOOST_PP_TUPLE_ELEM(5, 0, state) \ + ) \ + , BOOST_PP_TUPLE_ELEM(5, 1, state) \ + ) +/**/ + +#include + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_build_end_sentinel(z, n, text) \ + BOOST_PP_COMMA_IF(n) BOOST_PARAMETER_AUX_PP_FOR_EACH_END_S +/**/ + +#include + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_build_end_sentinel_tuple(arity) \ + ( \ + BOOST_PP_REPEAT( \ + arity, BOOST_PARAMETER_AUX_PP_FOR_EACH_build_end_sentinel, _ \ + ) \ + ) +/**/ + +#include + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH_R(r, arity, list, data, macro) \ + BOOST_PP_CAT(BOOST_PP_FOR_, r)( \ + (list \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_build_end_sentinel_tuple(arity) \ + , data \ + , macro \ + , arity \ + , 0 \ + ) \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_pred \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_op \ + , BOOST_PARAMETER_AUX_PP_FOR_EACH_macro \ + ) +/**/ + +#include + +#define BOOST_PARAMETER_AUX_PP_FOR_EACH(arity, list, data, macro) \ + BOOST_PARAMETER_AUX_PP_FOR_EACH_R( \ + BOOST_PP_DEDUCE_R(), arity, list, data, macro \ + ) +/**/ + +#endif // include guard + diff --git a/include/boost/parameter/aux_/preprocessor/impl/forwarding_overloads.hpp b/include/boost/parameter/aux_/preprocessor/impl/forwarding_overloads.hpp index dbc19b5..24402f1 100755 --- a/include/boost/parameter/aux_/preprocessor/impl/forwarding_overloads.hpp +++ b/include/boost/parameter/aux_/preprocessor/impl/forwarding_overloads.hpp @@ -7,6 +7,10 @@ #ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FORWARDING_OVERLOADS_HPP #define BOOST_PARAMETER_AUX_PREPROCESSOR_IMPL_FORWARDING_OVERLOADS_HPP +#include + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + #include // Expands to a forwarding parameter for a constructor or forwarding function. @@ -52,8 +56,8 @@ ) \ >::type \ >::type \ - BOOST_PARAMETER_MEMBER_FUNCTION_NAME(BOOST_PP_TUPLE_ELEM(3, 0, data))( \ - ) BOOST_PP_EXPR_IF(BOOST_PP_TUPLE_ELEM(3, 2, data), const) \ + BOOST_PARAMETER_MEMBER_FUNCTION_NAME(BOOST_PP_TUPLE_ELEM(3, 0, data))() \ + BOOST_PP_EXPR_IF(BOOST_PP_TUPLE_ELEM(3, 2, data), const) \ { \ return BOOST_PARAMETER_FUNCTION_IMPL_NAME( \ BOOST_PP_TUPLE_ELEM(3, 1, data) \ @@ -90,7 +94,7 @@ >::type \ BOOST_PARAMETER_MEMBER_FUNCTION_NAME(BOOST_PP_TUPLE_ELEM(3, 0, data))( \ BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, ParameterArgumentType, && a) \ - , BOOST_PARAMETER_FUNCTION_FORWARD_MATCH_Z( \ + BOOST_PARAMETER_FUNCTION_FORWARD_MATCH_Z( \ z \ , BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ BOOST_PP_TUPLE_ELEM(3, 1, data) \ @@ -125,7 +129,7 @@ BOOST_PP_EXPR_IF(BOOST_PP_EQUAL(n, 1), explicit) \ inline BOOST_PP_TUPLE_ELEM(2, 0, data)( \ BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, ParameterArgumentType, && a) \ - , BOOST_PARAMETER_FUNCTION_FORWARD_MATCH_Z( \ + BOOST_PARAMETER_FUNCTION_FORWARD_MATCH_Z( \ z \ , BOOST_PP_CAT(constructor_parameters, __LINE__) \ , n \ @@ -202,5 +206,247 @@ ) /**/ +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +#include +#include +#include +#include + +// Expands to the default constructor, whose job is to pass an empty argument +// pack back to the delegate constructor of the base class. +#define BOOST_PARAMETER_DEFAULT_CONSTRUCTOR(z, n, seq) \ + inline \ + BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)))() \ + : BOOST_PARAMETER_PARENTHESIZED_TYPE( \ + BOOST_PP_TUPLE_ELEM( \ + 2, 1, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + )(BOOST_PP_CAT(constructor_parameters, __LINE__)()()) \ + { \ + } +/**/ + +#include +#include +#include + +// Expands to a 0-arity forwarding function, whose job is to pass an empty +// argument pack to the front-end implementation function. +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_0_ARITY(z, n, seq) \ + BOOST_PARAMETER_MEMBER_FUNCTION_STATIC( \ + BOOST_PP_TUPLE_ELEM( \ + 3, 1, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + ) \ + inline BOOST_PARAMETER_FUNCTION_RESULT_NAME( \ + BOOST_PP_TUPLE_ELEM( \ + 3, 1, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + )< \ + ::boost::parameter::aux::argument_pack< \ + BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM( \ + 3, 1, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + ) \ + >::type \ + >::type \ + BOOST_PARAMETER_MEMBER_FUNCTION_NAME( \ + BOOST_PP_TUPLE_ELEM( \ + 3, 0, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + )() BOOST_PP_EXPR_IF( \ + BOOST_PP_TUPLE_ELEM( \ + 3, 2, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + , const \ + ) \ + { \ + return BOOST_PARAMETER_FUNCTION_IMPL_NAME( \ + BOOST_PP_TUPLE_ELEM( \ + 3, 1, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + )( \ + BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM( \ + 3, 1, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + )()() \ + ); \ + } +/**/ + +#include +#include +#include +#include +#include + +// Expands to a constructor whose job is to consolidate its arguments into a +// pack for the delegate constructor of the base class to take in. Each +// element in BOOST_PP_SEQ_TAIL(seq) determines the const-ness of the +// corresponding argument. +#define BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_R(r, seq) \ + template < \ + BOOST_PP_ENUM_PARAMS( \ + BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)) \ + , typename ParameterArgumentType \ + ) \ + > \ + BOOST_PP_EXPR_IF( \ + BOOST_PP_EQUAL(BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)), 1) \ + , explicit \ + ) \ + inline BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PP_SEQ_HEAD(seq))( \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARGS( \ + BOOST_PP_SEQ_TAIL(seq), (ParameterArgumentType)(a) \ + ) \ + BOOST_PARAMETER_FUNCTION_FORWARD_MATCH( \ + BOOST_PP_CAT(constructor_parameters, __LINE__) \ + , BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)) \ + , ParameterArgumentType \ + ) \ + ) : BOOST_PARAMETER_PARENTHESIZED_TYPE( \ + BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_HEAD(seq)) \ + )( \ + BOOST_PP_CAT(constructor_parameters, __LINE__)()( \ + BOOST_PP_ENUM_PARAMS( \ + BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)), a \ + ) \ + ) \ + ) \ + { \ + } +/**/ + +// Expands to a forwarding function, whose job is to consolidate its arguments +// into a pack for the front-end implementation function to take in. Each +// element in BOOST_PP_SEQ_TAIL(seq) determines the const-ness of the +// corresponding argument. +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_R(r, seq) \ + template < \ + BOOST_PP_ENUM_PARAMS( \ + BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)) \ + , typename ParameterArgumentType \ + ) \ + > \ + BOOST_PARAMETER_MEMBER_FUNCTION_STATIC( \ + BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_SEQ_HEAD(seq)) \ + ) \ + inline typename BOOST_PARAMETER_FUNCTION_RESULT_NAME( \ + BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_SEQ_HEAD(seq)) \ + )< \ + typename ::boost::parameter::aux::argument_pack< \ + BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_SEQ_HEAD(seq)) \ + ) \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARGS( \ + BOOST_PP_SEQ_TAIL(seq), (ParameterArgumentType) \ + ) \ + >::type \ + >::type \ + BOOST_PARAMETER_MEMBER_FUNCTION_NAME( \ + BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_SEQ_HEAD(seq)) \ + )( \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARGS( \ + BOOST_PP_SEQ_TAIL(seq), (ParameterArgumentType)(a) \ + ) \ + BOOST_PARAMETER_FUNCTION_FORWARD_MATCH( \ + BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_SEQ_HEAD(seq)) \ + ) \ + , BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)) \ + , ParameterArgumentType \ + ) \ + ) BOOST_PP_EXPR_IF( \ + BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_HEAD(seq)), const \ + ) \ + { \ + return BOOST_PARAMETER_FUNCTION_IMPL_NAME( \ + BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_SEQ_HEAD(seq)) \ + )( \ + BOOST_PARAMETER_FUNCTION_SPECIFICATION_NAME( \ + BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_SEQ_HEAD(seq)) \ + )()( \ + BOOST_PP_ENUM_PARAMS( \ + BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)), a \ + ) \ + ) \ + ); \ + } +/**/ + +#include +#include + +// Expands to all constructors that take in n arguments. Enables +// BOOST_PARAMETER_CONSTRUCTOR_OVERLOADS_AUX to use +// BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_Z within BOOST_PP_REPEAT_FROM_TO. +#define BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_Z(z, n, data) \ + BOOST_PP_IF( \ + n \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_Z \ + , BOOST_PARAMETER_DEFAULT_CONSTRUCTOR \ + )(z, n, (BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_R)(data)) +/**/ + +// Expands to all forwarding functions that take in n arguments. Enables +// BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOADS_AUX to use +// BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_Z within BOOST_PP_REPEAT_FROM_TO. +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_Z(z, n, data) \ + BOOST_PP_IF( \ + n \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_Z \ + , BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_0_ARITY \ + )(z, n, (BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_R)(data)) +/**/ + +#include + +// Helper macro for BOOST_PARAMETER_CONSTRUCTOR_OVERLOADS. +#define BOOST_PARAMETER_CONSTRUCTOR_OVERLOADS_AUX(class_, base, range) \ + BOOST_PP_REPEAT_FROM_TO( \ + BOOST_PP_TUPLE_ELEM(2, 0, range) \ + , BOOST_PP_TUPLE_ELEM(2, 1, range) \ + , BOOST_PARAMETER_CONSTRUCTOR_OVERLOAD_Z \ + , (class_, base) \ + ) +/**/ + +// Helper macro for BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOADS. +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOADS_AUX(name, impl, range, c) \ + BOOST_PP_REPEAT_FROM_TO( \ + BOOST_PP_TUPLE_ELEM(2, 0, range) \ + , BOOST_PP_TUPLE_ELEM(2, 1, range) \ + , BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOAD_Z \ + , (name, impl, c) \ + ) +/**/ + +#include + +// Expands to the layer of forwarding functions for the constructor in the +// specified class, whose arguments determine the range of arities. +#define BOOST_PARAMETER_CONSTRUCTOR_OVERLOADS(class_, base, args) \ + BOOST_PARAMETER_CONSTRUCTOR_OVERLOADS_AUX( \ + class_ \ + , base \ + , BOOST_PARAMETER_ARITY_RANGE(args) \ + ) +/**/ + +// Expands to the layer of forwarding functions for the function with the +// specified name, whose arguments determine the range of arities. +#define BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOADS(name, impl, args, const_) \ + BOOST_PARAMETER_FUNCTION_FORWARD_OVERLOADS_AUX( \ + name \ + , impl \ + , BOOST_PARAMETER_ARITY_RANGE(args) \ + , const_ \ + ) +/**/ + +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING #endif // include guard diff --git a/include/boost/parameter/aux_/preprocessor/impl/function_cast.hpp b/include/boost/parameter/aux_/preprocessor/impl/function_cast.hpp index d92d062..0e84535 100755 --- a/include/boost/parameter/aux_/preprocessor/impl/function_cast.hpp +++ b/include/boost/parameter/aux_/preprocessor/impl/function_cast.hpp @@ -9,27 +9,7 @@ #include -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) - -#define BOOST_PARAMETER_FUNCTION_CAST_T(value_t, predicate, args) value_t - -#include - -#define BOOST_PARAMETER_FUNCTION_CAST_B(value_t, predicate, args) \ - ::boost::mpl::true_ - -#include - -namespace boost { namespace parameter { namespace aux { - - template - inline T&& forward(T&& t) - { - return ::std::forward(t); - } -}}} // namespace boost::parameter::aux - -#else // !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) namespace boost { namespace parameter { namespace aux { @@ -86,11 +66,7 @@ namespace boost { namespace parameter { namespace aux { namespace boost { namespace parameter { namespace aux { template -#if BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x580)) - struct cast< ::boost::parameter::aux::voidstar(Predicate),Args> -#else struct cast -#endif : ::boost::parameter::aux::cast { }; @@ -334,6 +310,259 @@ namespace boost { namespace parameter { namespace aux { } }}} // namespace boost::parameter::aux -#endif // Borland workarounds needed. +#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#define BOOST_PARAMETER_FUNCTION_CAST_T(value_t, predicate, args) value_t +#define BOOST_PARAMETER_FUNCTION_CAST_B(value, predicate, args) value +#else // no perfect forwarding support and no Borland workarounds needed + +namespace boost { namespace parameter { namespace aux { + + // Handles possible implicit casts. Used by preprocessor.hpp + // to normalize user input. + // + // cast::execute() is identity + // cast::execute() is identity + // cast::execute() casts to X + // + // preprocessor.hpp uses this like this: + // + // #define X(value, predicate) + // cast::execute(value) + // + // X(something, *) + // X(something, *(predicate)) + // X(something, (int)) + template + struct cast; +}}} // namespace boost::parameter::aux + +#include +#include +#include + +namespace boost { namespace parameter { namespace aux { + + template + struct cast + { + template + struct apply + { + typedef T& type; + }; + + inline static ::boost::parameter::aux::use_default_tag + execute(::boost::parameter::aux::use_default_tag) + { + return ::boost::parameter::aux::use_default_tag(); + } + + template + inline static U& execute(U& value) + { + return value; + } + }; +}}} // namespace boost::parameter::aux + +#include + +namespace boost { namespace parameter { namespace aux { + + template +#if BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x580)) + struct cast< ::boost::parameter::aux::voidstar(Predicate),Args> +#else + struct cast +#endif + : ::boost::parameter::aux::cast + { + }; +}}} // namespace boost::parameter::aux + +#include + +namespace boost { namespace parameter { namespace aux { + + // This is a hack used in cast<> to turn the user supplied type, + // which may or may not be a placeholder expression, into one, + // so that it will be properly evaluated by mpl::apply. + template + struct as_placeholder_expr + { + typedef T type; + }; +}}} // namespace boost::parameter::aux + +#include +#include +#include +#include + +namespace boost { namespace parameter { namespace aux { + + template + struct is_target_same_as_source + : ::boost::mpl::if_< + ::boost::is_same< + typename ::boost::remove_const< + typename ::boost::remove_reference< + typename ::boost::mpl::apply2< + ::boost::parameter::aux + ::as_placeholder_expr + , Source + , Args + >::type + >::type + >::type + , typename ::boost::remove_const::type + > + , ::boost::mpl::true_ + , ::boost::mpl::false_ + >::type + { + }; + + template < + typename Target + , typename Source + , typename Args + , typename Enable = ::boost::parameter::aux + ::is_target_same_as_source + > + struct cast_impl + { + typedef Source& type; + + inline static Source& evaluate(Source& value) + { + return value; + } + }; +}}} // namespace boost::parameter::aux + +#include +#include + +namespace boost { namespace parameter { namespace aux { + + // Covers the case where is_convertible but not + // is_same. Use cases are covered + // by test/normalize_argument_types.cpp + template + class cast_convert + { + typedef ::boost::parameter::aux::cast_convert _self; + + public: + typedef typename ::boost::add_lvalue_reference< + typename ::boost::add_const::type + >::type type; + + private: + template + inline static typename _self::type _mod_const(U const& u) + { + return u; + } + + inline static Target _copy(Target value) + { + return value; + } + + public: + inline static typename _self::type evaluate(Source& source) + { + return _self::_mod_const(_self::_copy(source)); + } + }; + + template + struct cast_impl + : ::boost::parameter::aux::cast_convert< + Source, + typename ::boost::mpl::apply2< + ::boost::parameter::aux::as_placeholder_expr + , Source + , Args + >::type + > + { + }; +}}} // namespace boost::parameter::aux + +#include + +namespace boost { namespace parameter { namespace aux { + + template + struct cast + { + template + struct apply + { + typedef typename ::boost::mpl::eval_if< + ::boost::parameter::aux + ::is_target_same_as_source + , ::boost::add_lvalue_reference + , ::boost::parameter::aux::cast_impl< + Target + , T + , Args + , ::boost::mpl::false_ + > + >::type type; + }; + + inline static ::boost::parameter::aux::use_default_tag + execute(::boost::parameter::aux::use_default_tag) + { + return ::boost::parameter::aux::use_default_tag(); + } + + template + inline static typename ::boost::parameter::aux + ::cast_impl::type + execute(U const& value) + { + return ::boost::parameter::aux + ::cast_impl::evaluate(value); + } + + template + inline static typename ::boost::parameter::aux + ::cast_impl::type + execute(U& value) + { + return ::boost::parameter::aux + ::cast_impl::evaluate(value); + } + }; +}}} // namespace boost::parameter::aux + +#include +#include + +// Expands to the reference-qualified target type of the argument +// as indicated by the predicate. +#define BOOST_PARAMETER_FUNCTION_CAST_T(tag, predicate, args) \ + typename ::boost::mpl::apply_wrap1< \ + ::boost::parameter::aux::cast \ + , typename ::boost::parameter::value_type< \ + args \ + , tag \ + , ::boost::parameter::aux::use_default_tag \ + >::type \ + >::type +/**/ + +// Expands to the converted or passed-through value +// as indicated by the predicate. +#define BOOST_PARAMETER_FUNCTION_CAST_B(value, predicate, args) \ + ::boost::parameter::aux::cast::execute(value) +/**/ + +#endif // perfect forwarding support, or Borland workarounds needed #endif // include guard diff --git a/include/boost/parameter/aux_/preprocessor/impl/function_dispatch_layer.hpp b/include/boost/parameter/aux_/preprocessor/impl/function_dispatch_layer.hpp index d74ec65..5f98c0a 100755 --- a/include/boost/parameter/aux_/preprocessor/impl/function_dispatch_layer.hpp +++ b/include/boost/parameter/aux_/preprocessor/impl/function_dispatch_layer.hpp @@ -11,7 +11,7 @@ // Expands to keyword_tag_type for some keyword_tag. #define BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_TYPE(keyword_tag) \ - BOOST_PP_CAT(BOOST_PP_CAT(keyword_tag, _), type) + BOOST_PP_CAT(keyword_tag, _type) /**/ // Expands to a template parameter for each dispatch function. @@ -19,6 +19,10 @@ , typename BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_TYPE(macro(arg)) /**/ +#include + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + // Expands to a forwarding parameter for a dispatch function. #define BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_DEFN(r, macro, arg) \ , BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_TYPE(macro(arg))&& macro(arg) @@ -28,11 +32,29 @@ // Expands to an argument passed from one dispatch function to the next. #define BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_FWD(r, macro, arg) \ - , ::std::forward< \ + , ::std::forward< \ BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_TYPE(macro(arg)) \ >(macro(arg)) /**/ +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +// Expands to a forwarding parameter for a dispatch function. The parameter +// type stores its const-ness. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_DEFN(r, macro, arg) \ + , BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_TYPE(macro(arg))& macro(arg) +/**/ + +#include + +// Expands to an argument passed from one dispatch function to the next. +// Explicit forwarding takes the form of forcing the argument to be an lvalue. +#define BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_FWD(r, macro, arg) \ + , ::boost::parameter::aux::as_lvalue(macro(arg)) +/**/ + +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING + #include #include #include @@ -139,7 +161,7 @@ // Extracts the corresponding required argument from the pack. // This form enables BOOST_PARAMETER_FUNCTION_DISPATCH_LAYER to use it // from within BOOST_PP_SEQ_FOR_EACH. -// +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) // The boost::parameter::aux::forward wrapper is necessary to transmit the // target type to the next dispatch function. Otherwise, the argument will // retain its original type. -- Cromwell D. Enage @@ -163,11 +185,29 @@ ] \ ) /**/ +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +// The explicit type cast is necessary to transmit the target type to the next +// dispatch function. Otherwise, the argument will retain its original type. +// -- Cromwell D. Enage +#define BOOST_PARAMETER_FUNCTION_DISPATCH_ARG_CAST_R(r, tag_ns, arg) \ + , BOOST_PARAMETER_FUNCTION_CAST_T( \ + tag_ns::BOOST_PARAMETER_FN_ARG_NAME(arg) \ + , BOOST_PARAMETER_FN_ARG_PRED(arg) \ + , Args \ + )( \ + args[ \ + ::boost::parameter::keyword< \ + tag_ns::BOOST_PARAMETER_FN_ARG_NAME(arg) \ + >::instance \ + ] \ + ) +/**/ +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING // Takes in the arg tuple (name, pred, default) and the tag namespace. // Extracts the corresponding optional argument from the pack if specified, // otherwise temporarily passes use_default_tag() to the dispatch functions. -// +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) // The boost::parameter::aux::forward wrapper is necessary to transmit the // target type to the next dispatch function. Otherwise, the argument will // retain its original type. -- Cromwell D. Enage @@ -191,6 +231,19 @@ ] \ ) /**/ +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +#define BOOST_PARAMETER_FUNCTION_DISPATCH_OPT_ARG_CAST(arg, tag_ns) \ + BOOST_PARAMETER_FUNCTION_CAST_B( \ + args[ \ + ::boost::parameter::keyword< \ + tag_ns::BOOST_PARAMETER_FN_ARG_NAME(arg) \ + >::instance || ::boost::parameter::aux::use_default_tag() \ + ] \ + , BOOST_PARAMETER_FN_ARG_PRED(arg) \ + , Args \ + ) +/**/ +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING #include diff --git a/include/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp b/include/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp index b2f0572..3b452ed 100755 --- a/include/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp +++ b/include/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp @@ -12,30 +12,30 @@ !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) #include -#include +#include // Expands to an extra argument that is well-formed // iff all Args... satisfy the requirements set by params. #define BOOST_PARAMETER_FUNCTION_FORWARD_MATCH(params, n, prefix) \ - typename ::boost::parameter::aux::match< \ - params, BOOST_PP_ENUM_PARAMS(n, prefix) \ + , typename ::boost::parameter::aux::match< \ + params BOOST_PP_ENUM_TRAILING_PARAMS(n, prefix) \ >::type = params() /**/ #define BOOST_PARAMETER_FUNCTION_FORWARD_MATCH_Z(z, params, n, prefix) \ - typename ::boost::parameter::aux::match< \ - params, BOOST_PP_ENUM_PARAMS_Z(z, n, prefix) \ + , typename ::boost::parameter::aux::match< \ + params BOOST_PP_ENUM_TRAILING_PARAMS_Z(z, n, prefix) \ >::type = params() /**/ #else // SFINAE/Borland workarounds needed. #define BOOST_PARAMETER_FUNCTION_FORWARD_MATCH(params, n, prefix) \ - params = params() + , params = params() /**/ #define BOOST_PARAMETER_FUNCTION_FORWARD_MATCH_Z(z, params, n, prefix) \ - params = params() + , params = params() /**/ #endif diff --git a/include/boost/parameter/aux_/preprocessor/inc_binary_seq.hpp b/include/boost/parameter/aux_/preprocessor/inc_binary_seq.hpp new file mode 100755 index 0000000..9796e33 --- /dev/null +++ b/include/boost/parameter/aux_/preprocessor/inc_binary_seq.hpp @@ -0,0 +1,78 @@ +// Copyright Cromwell D. Enage 2013. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_INC_BINARY_SEQ_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_INC_BINARY_SEQ_HPP + +#include + +// This macro keeps the rest of the sequence if carry == 0. +#define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_0(seq, element) \ + (BOOST_PP_SEQ_PUSH_BACK(seq, element), 0) +/**/ + +#include + +// This macro updates the rest of the sequence if carry == 1. +#define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_1(seq, element) \ + (BOOST_PP_SEQ_PUSH_BACK(seq, BOOST_PP_IIF(element, 0, 1)), element) +/**/ + +#include +#include + +// This macro maintains a tuple (seq, carry), where seq is the intermediate +// result and carry is a flag that will unset upon finding an element == 0. +#define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_OP(s, result_tuple, element) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_ \ + , BOOST_PP_TUPLE_ELEM(2, 1, result_tuple) \ + )(BOOST_PP_TUPLE_ELEM(2, 0, result_tuple), element) +/**/ + +// This macro keeps the sequence at its original length if carry == 0. +#define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL_0(seq) seq +/**/ + +// This macro appends a zero to seq if carry == 1. +#define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL_1(seq) \ + BOOST_PP_SEQ_PUSH_BACK(seq, 0) +/**/ + +// This macro takes in the tuple (seq, carry), with carry indicating whether +// or not seq originally contained all 1s. If so, then seq now contains all +// 0s, and this macro pushes an extra 0 before expanding to the new sequence. +// Otherwise, this macro expands to seq as is. +#define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL(seq_and_carry) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL_ \ + , BOOST_PP_TUPLE_ELEM(2, 1, seq_and_carry) \ + )(BOOST_PP_TUPLE_ELEM(2, 0, seq_and_carry)) +/**/ + +#include +#include + +// This macro treats the specified sequence of 1s and 0s like a binary number +// in reverse and expands to a sequence representing the next value up. +// However, if the input sequence contains all 1s, then the output sequence +// will contain one more element but all 0s. +// +// Examples: +// seq = (1)(0)(1)(0) --> return (0)(1)(1)(0) +// seq = (1)(1)(1)(0) --> return (0)(0)(0)(1) +// seq = (1)(1)(1)(1) --> return (0)(0)(0)(0)(0) +#define BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ(seq) \ + BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_IMPL( \ + BOOST_PP_SEQ_FOLD_LEFT( \ + BOOST_PARAMETER_AUX_PP_INC_BINARY_SEQ_OP \ + , (BOOST_PP_SEQ_NIL, 1) \ + , seq \ + ) \ + ) +/**/ + +#endif // include guard + diff --git a/include/boost/parameter/aux_/preprocessor/is_binary.hpp b/include/boost/parameter/aux_/preprocessor/is_binary.hpp index 343b362..a8f3c67 100755 --- a/include/boost/parameter/aux_/preprocessor/is_binary.hpp +++ b/include/boost/parameter/aux_/preprocessor/is_binary.hpp @@ -6,6 +6,7 @@ #ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IS_BINARY_HPP #define BOOST_PARAMETER_AUX_PREPROCESSOR_IS_BINARY_HPP +#include #include #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) diff --git a/include/boost/parameter/aux_/preprocessor/is_nullary.hpp b/include/boost/parameter/aux_/preprocessor/is_nullary.hpp index 4ff3cb9..5d8e59c 100755 --- a/include/boost/parameter/aux_/preprocessor/is_nullary.hpp +++ b/include/boost/parameter/aux_/preprocessor/is_nullary.hpp @@ -6,6 +6,7 @@ #ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_IS_NULLARY_HPP #define BOOST_PARAMETER_AUX_PREPROCESSOR_IS_NULLARY_HPP +#include #include #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) diff --git a/include/boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp b/include/boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp new file mode 100755 index 0000000..393dacc --- /dev/null +++ b/include/boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp @@ -0,0 +1,165 @@ +// Copyright David Abrahams, Daniel Wallin 2003. +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// No include guard. This file is intended for multiple inclusion. + +#define BOOST_PARAMETER_right_angle(z, n, _) > +/**/ + +#define BOOST_PARAMETER_satisfies_end(z, n, false_t) ,false_t> +/**/ + +#include +#include + +// Generates: +// +// make< +// parameter_spec##0, argument_type##0 +// , make< +// parameter_spec##1, argument_type##1 +// , ... boost::mpl::identity +// ...> +// > +#define BOOST_PARAMETER_make_arg_list(z, n, names) \ + BOOST_PP_SEQ_ELEM(0, names)< \ + BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(1, names), n), \ + BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(2, names), n), +/**/ + +#include +#include +#include + +#define BOOST_PARAMETER_build_arg_list(n, make, param_spec, arg_type) \ + BOOST_PP_REPEAT( \ + n, BOOST_PARAMETER_make_arg_list, (make)(param_spec)(arg_type) \ + ) \ + ::boost::mpl::identity< ::boost::parameter::void_> \ + BOOST_PP_REPEAT(n, BOOST_PARAMETER_right_angle, _) +/**/ + +#define BOOST_PARAMETER_make_deduced_list(z, n, names) \ + BOOST_PP_SEQ_ELEM(0, names) \ + BOOST_PP_REPEAT(n, BOOST_PARAMETER_right_angle, _) +/**/ + +#define BOOST_PARAMETER_forward_typedef(z, n, names) \ + typedef BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(0, names), n) \ + BOOST_PP_CAT(BOOST_PP_SEQ_ELEM(1, names), n); +/**/ + +#define BOOST_PARAMETER_template_args(z, n, prefix) \ + typename BOOST_PP_CAT(prefix, n) = ::boost::parameter::void_ +/**/ + +#include + +#if (0 < BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY) + +#include +#include + +#define BOOST_PARAMETER_make_arg_items_R(r, prefix, i, elem) \ + ::boost::parameter::aux::item +#include +#include +#include + +#define BOOST_PARAMETER_function_call_arg_list_R(r, seq) \ + ::boost::parameter::aux::make_arg_list< \ + BOOST_PP_SEQ_FOR_EACH_I_R( \ + r, BOOST_PARAMETER_make_arg_items_R, PS, seq \ + ) \ + ::boost::parameter::void_ \ + BOOST_PP_REPEAT( \ + BOOST_PP_SEQ_SIZE(seq), BOOST_PARAMETER_right_angle, _ \ + ) \ + , deduced_list \ + , ::boost::parameter::aux::tag_keyword_arg \ + > +/**/ + +#include + +#define BOOST_PARAMETER_function_call_arg_pack_init(z, n, limit) \ + BOOST_PP_CAT(a, BOOST_PP_SUB(limit, n)) +/**/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#define BOOST_PARAMETER_function_call_op_overload_R(r, seq) \ + template < \ + BOOST_PP_ENUM_PARAMS( \ + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)) \ + , typename A \ + ) \ + > \ + inline typename ::boost::mpl::first< \ + typename BOOST_PARAMETER_function_call_arg_list_R( \ + r, BOOST_PP_SEQ_TAIL(seq) \ + )::type \ + >::type \ + operator()( \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARGS( \ + BOOST_PP_SEQ_TAIL(seq), (A)(a) \ + ) \ + ) const \ + { \ + typedef typename BOOST_PARAMETER_function_call_arg_list_R( \ + r, BOOST_PP_SEQ_TAIL(seq) \ + )::type result; \ + typedef typename ::boost::mpl::first::type result_type; \ + typedef typename ::boost::mpl::second::type error; \ + error(); \ + return result_type( \ + BOOST_PP_ENUM( \ + BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)) \ + , BOOST_PARAMETER_function_call_arg_pack_init \ + , BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq))) \ + ) \ + BOOST_PP_ENUM_TRAILING_PARAMS( \ + BOOST_PP_SUB( \ + BOOST_PARAMETER_MAX_ARITY \ + , BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)) \ + ) \ + , ::boost::parameter::aux::void_reference() BOOST_PP_INTERCEPT \ + ) \ + ); \ + } +/**/ + +#endif // exponential overloads + +#include +#include + +#define BOOST_PARAMETER_satisfies_begin(z, n, prefix) \ + ::boost::mpl::eval_if< \ + ::boost::parameter::aux::satisfies_requirements_of< \ + typename ::boost::mpl::first::type \ + , BOOST_PP_CAT(prefix, n) \ + >, +/**/ + diff --git a/include/boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp b/include/boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp new file mode 100755 index 0000000..71cc596 --- /dev/null +++ b/include/boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp @@ -0,0 +1,24 @@ +// Copyright David Abrahams, Daniel Wallin 2003. +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// No include guard. This file is intended for multiple inclusion. + +#undef BOOST_PARAMETER_satisfies_begin +#if (0 < BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY) +#undef BOOST_PARAMETER_function_call_op_overload_R +#undef BOOST_PARAMETER_function_call_arg_pack_init +#undef BOOST_PARAMETER_function_call_arg_list_R +#undef BOOST_PARAMETER_make_arg_items_R +#endif +#undef BOOST_PARAMETER_template_args +#undef BOOST_PARAMETER_forward_typedef +#undef BOOST_PARAMETER_build_deduced_list +#undef BOOST_PARAMETER_make_deduced_list +#undef BOOST_PARAMETER_build_arg_list +#undef BOOST_PARAMETER_make_arg_list +#undef BOOST_PARAMETER_satisfies_end +#undef BOOST_PARAMETER_right_angle + diff --git a/include/boost/parameter/aux_/preprocessor/overloads.hpp b/include/boost/parameter/aux_/preprocessor/overloads.hpp new file mode 100755 index 0000000..e1508aa --- /dev/null +++ b/include/boost/parameter/aux_/preprocessor/overloads.hpp @@ -0,0 +1,92 @@ +// Copyright David Abrahams, Daniel Wallin 2003. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// This file generates overloads in this format: +// +// template +// typename ::boost::mpl::apply_wrap1< +// ::boost::parameter::aux::make_arg_list< +// PS0,A0 +// , ::boost::parameter::aux::make_arg_list< +// PS1,A1 +// , ::boost::mpl::identity< +// ::boost::parameter::aux::empty_arg_list +// > +// > +// > +// , unnamed_list +// >::type +// operator()(A0 const& a0, A1 const& a1) const +// { +// typedef typename ::boost::mpl::apply_wrap1< +// ::boost::parameter::aux::make_arg_list< +// PS0,A0 +// , ::boost::parameter::aux::make_arg_list< +// PS1,A1 +// , ::boost::mpl::identity< +// ::boost::parameter::aux::empty_arg_list +// > +// > +// > +// >::type arg_tuple; +// +// return arg_tuple( +// a0 +// , a1 +// , ::boost::parameter::aux::void_() +// ... +// ); +// } +// + +#if !defined(BOOST_PP_IS_ITERATING) +# error Boost.Parameters - do not include this file! +#endif + +#define N BOOST_PP_ITERATION() + +#define BOOST_PARAMETER_open_list(z, n, text) \ + ::boost::parameter::aux::item< \ + BOOST_PP_CAT(PS, n), BOOST_PP_CAT(A, n) + +#define BOOST_PARAMETER_close_list(z, n, text) > + +#define BOOST_PARAMETER_arg_list(n) \ + ::boost::parameter::aux::make_arg_list< \ + BOOST_PP_ENUM(N, BOOST_PARAMETER_open_list, _) \ + , ::boost::parameter::void_ \ + BOOST_PP_REPEAT(N, BOOST_PARAMETER_close_list, _) \ + , deduced_list \ + , ::boost::parameter::aux::tag_keyword_arg \ + > + +#define BOOST_PARAMETER_arg_pack_init(z, n, limit) \ + BOOST_PP_CAT(a, BOOST_PP_SUB(limit, n)) + +template +typename ::boost::mpl::first< + typename BOOST_PARAMETER_arg_list(N)::type +>::type +operator()(BOOST_PP_ENUM_BINARY_PARAMS(N, A, & a)) const +{ + typedef typename BOOST_PARAMETER_arg_list(N)::type result; + typedef typename ::boost::mpl::first::type result_type; + typedef typename ::boost::mpl::second::type error; + error(); + + return result_type( + BOOST_PP_ENUM(N, BOOST_PARAMETER_arg_pack_init, BOOST_PP_DEC(N)) + BOOST_PP_ENUM_TRAILING_PARAMS( + BOOST_PP_SUB(BOOST_PARAMETER_MAX_ARITY, N) + , ::boost::parameter::aux::void_reference() BOOST_PP_INTERCEPT + ) + ); +} + +#undef BOOST_PARAMETER_arg_list +#undef BOOST_PARAMETER_close_list +#undef BOOST_PARAMETER_open_list +#undef N + diff --git a/include/boost/parameter/aux_/preprocessor/seq_enum.hpp b/include/boost/parameter/aux_/preprocessor/seq_enum.hpp new file mode 100755 index 0000000..1455105 --- /dev/null +++ b/include/boost/parameter/aux_/preprocessor/seq_enum.hpp @@ -0,0 +1,26 @@ +// Copyright David Abrahams 2005. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_SEQ_ENUM_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_SEQ_ENUM_HPP + +#include +#include +#include + +#if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) +#include +// Temporary version of BOOST_PP_SEQ_ENUM +// until Paul M. integrates the workaround. +#define BOOST_PARAMETER_SEQ_ENUM_I(size, seq) \ + BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, size) seq +#define BOOST_PARAMETER_SEQ_ENUM(seq) \ + BOOST_PARAMETER_SEQ_ENUM_I(BOOST_PP_SEQ_SIZE(seq), seq) +#else +#define BOOST_PARAMETER_SEQ_ENUM(seq) BOOST_PP_SEQ_ENUM(seq) +#endif + +#endif // include guard + diff --git a/include/boost/parameter/aux_/preprocessor/seq_merge.hpp b/include/boost/parameter/aux_/preprocessor/seq_merge.hpp new file mode 100755 index 0000000..0653753 --- /dev/null +++ b/include/boost/parameter/aux_/preprocessor/seq_merge.hpp @@ -0,0 +1,1807 @@ +// Copyright Cromwell D. Enage 2017. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PARAMETER_AUX_PREPROCESSOR_SEQ_MERGE_HPP +#define BOOST_PARAMETER_AUX_PREPROCESSOR_SEQ_MERGE_HPP + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_0(seq0, seq1) seq1 +/**/ + +#include +#include + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_1(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT(seq1, BOOST_PP_SEQ_HEAD(seq0)) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_2(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_1(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_3(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_2(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_4(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_3(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_5(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_4(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_6(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_5(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_7(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_6(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_8(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_7(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_9(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_8(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_10(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_9(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_11(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_10(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_12(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_11(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_13(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_12(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_14(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_13(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_15(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_14(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_16(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_15(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_17(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_16(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_18(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_17(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_19(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_18(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_20(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_19(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_21(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_20(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_22(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_21(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_23(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_22(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_24(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_23(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_25(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_24(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_26(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_25(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_27(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_26(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_28(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_27(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_29(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_28(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_30(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_29(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_31(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_30(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_32(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_31(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_33(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_32(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_34(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_33(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_35(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_34(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_36(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_35(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_37(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_36(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_38(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_37(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_39(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_38(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_40(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_39(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_41(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_40(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_42(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_41(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_43(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_42(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_44(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_43(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_45(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_44(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_46(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_45(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_47(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_46(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_48(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_47(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_49(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_48(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_50(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_49(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_51(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_50(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_52(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_51(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_53(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_52(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_54(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_53(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_55(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_54(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_56(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_55(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_57(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_56(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_58(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_57(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_59(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_58(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_60(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_59(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_61(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_60(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_62(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_61(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_63(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_62(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_64(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_63(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_65(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_64(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_66(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_65(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_67(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_66(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_68(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_67(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_69(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_68(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_70(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_69(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_71(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_70(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_72(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_71(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_73(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_72(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_74(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_73(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_75(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_74(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_76(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_75(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_77(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_76(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_78(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_77(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_79(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_78(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_80(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_79(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_81(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_80(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_82(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_81(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_83(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_82(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_84(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_83(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_85(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_84(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_86(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_85(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_87(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_86(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_88(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_87(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_89(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_88(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_90(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_89(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_91(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_90(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_92(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_91(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_93(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_92(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_94(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_93(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_95(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_94(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_96(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_95(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_97(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_96(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_98(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_97(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_99(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_98(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_100(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_99(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_101(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_100(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_102(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_101(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_103(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_102(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_104(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_103(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_105(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_104(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_106(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_105(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_107(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_106(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_108(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_107(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_109(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_108(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_110(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_109(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_111(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_110(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_112(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_111(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_113(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_112(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_114(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_113(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_115(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_114(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_116(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_115(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_117(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_116(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_118(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_117(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_119(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_118(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_120(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_119(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_121(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_120(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_122(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_121(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_123(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_122(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_124(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_123(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_125(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_124(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_126(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_125(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_127(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_126(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_128(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_127(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_129(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_128(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_130(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_129(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_131(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_130(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_132(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_131(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_133(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_132(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_134(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_133(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_135(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_134(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_136(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_135(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_137(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_136(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_138(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_137(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_139(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_138(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_140(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_139(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_141(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_140(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_142(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_141(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_143(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_142(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_144(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_143(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_145(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_144(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_146(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_145(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_147(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_146(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_148(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_147(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_149(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_148(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_150(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_149(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_151(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_150(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_152(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_151(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_153(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_152(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_154(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_153(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_155(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_154(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_156(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_155(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_157(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_156(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_158(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_157(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_159(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_158(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_160(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_159(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_161(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_160(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_162(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_161(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_163(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_162(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_164(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_163(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_165(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_164(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_166(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_165(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_167(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_166(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_168(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_167(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_169(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_168(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_170(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_169(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_171(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_170(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_172(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_171(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_173(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_172(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_174(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_173(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_175(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_174(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_176(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_175(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_177(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_176(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_178(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_177(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_179(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_178(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_180(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_179(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_181(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_180(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_182(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_181(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_183(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_182(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_184(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_183(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_185(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_184(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_186(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_185(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_187(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_186(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_188(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_187(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_189(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_188(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_190(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_189(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_191(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_190(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_192(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_191(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_193(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_192(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_194(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_193(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_195(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_194(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_196(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_195(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_197(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_196(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_198(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_197(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_199(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_198(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_200(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_199(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_201(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_200(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_202(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_201(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_203(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_202(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_204(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_203(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_205(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_204(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_206(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_205(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_207(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_206(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_208(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_207(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_209(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_208(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_210(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_209(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_211(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_210(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_212(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_211(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_213(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_212(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_214(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_213(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_215(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_214(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_216(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_215(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_217(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_216(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_218(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_217(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_219(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_218(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_220(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_219(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_221(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_220(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_222(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_221(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_223(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_222(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_224(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_223(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_225(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_224(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_226(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_225(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_227(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_226(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_228(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_227(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_229(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_228(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_230(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_229(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_231(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_230(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_232(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_231(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_233(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_232(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_234(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_233(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_235(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_234(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_236(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_235(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_237(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_236(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_238(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_237(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_239(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_238(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_240(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_239(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_241(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_240(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_242(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_241(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_243(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_242(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_244(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_243(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_245(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_244(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_246(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_245(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_247(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_246(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_248(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_247(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_249(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_248(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_250(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_249(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_251(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_250(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_252(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_251(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_253(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_252(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_254(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_253(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE_255(seq0, seq1) \ + BOOST_PP_SEQ_PUSH_FRONT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_254(BOOST_PP_SEQ_TAIL(seq0), seq1) \ + , BOOST_PP_SEQ_HEAD(seq0) \ + ) +/**/ + +#include +#include + +#define BOOST_PARAMETER_AUX_PP_SEQ_MERGE(seq0, seq1) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_AUX_PP_SEQ_MERGE_, BOOST_PP_SEQ_SIZE(seq0) \ + )(seq0, seq1) +/**/ + +#endif // include guard + diff --git a/include/boost/parameter/aux_/set.hpp b/include/boost/parameter/aux_/set.hpp old mode 100644 new mode 100755 index 7ab93dc..922b16b --- a/include/boost/parameter/aux_/set.hpp +++ b/include/boost/parameter/aux_/set.hpp @@ -1,66 +1,81 @@ -// Copyright Daniel Wallin 2006. Use, modification and distribution is -// subject to the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// Copyright Daniel Wallin 2006. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) #ifndef BOOST_PARAMETER_SET_060912_HPP -# define BOOST_PARAMETER_SET_060912_HPP +#define BOOST_PARAMETER_SET_060912_HPP -# include +#include -# if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) -# include -# include -# include +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + +#include namespace boost { namespace parameter { namespace aux { -typedef mpl::set0<> set0; - -template -struct insert_ -{ - typedef typename mpl::insert::type type; -}; - -template -struct has_key_ -{ - typedef typename mpl::has_key::type type; -}; - + typedef ::boost::mpl::list0<> set0; }}} // namespace boost::parameter::aux -# else - -# include -# include -# include -# include -# include +#include namespace boost { namespace parameter { namespace aux { -typedef mpl::list0<> set0; - -template -struct insert_ -{ - typedef typename mpl::push_front::type type; -}; - -template -struct has_key_ -{ - typedef typename mpl::find::type iter; - typedef mpl::not_< - is_same::type> - > type; -}; - + template + struct insert_ : ::boost::mpl::push_front + { + }; }}} // namespace boost::parameter::aux -# endif +#include +#include +#include +#include +#include +namespace boost { namespace parameter { namespace aux { -#endif // BOOST_PARAMETER_SET_060912_HPP + template + struct has_key_ + { + typedef typename ::boost::mpl::find::type iter; + typedef typename ::boost::mpl::if_< + ::boost::is_same::type> + , ::boost::mpl::false_ + , ::boost::mpl::true_ + >::type type; + }; +}}} // namespace boost::parameter::aux + +#else // !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + +#include + +namespace boost { namespace parameter { namespace aux { + + typedef ::boost::mpl::set0<> set0; +}}} // namespace boost::parameter::aux + +#include + +namespace boost { namespace parameter { namespace aux { + + template + struct insert_ : ::boost::mpl::insert + { + }; +}}} // namespace boost::parameter::aux + +#include + +namespace boost { namespace parameter { namespace aux { + + template + struct has_key_ : ::boost::mpl::has_key + { + }; +}}} // namespace boost::parameter::aux + +#endif // Borland workarounds needed. +#endif // include guard diff --git a/include/boost/parameter/aux_/tag.hpp b/include/boost/parameter/aux_/tag.hpp index 23b40a8..17e9bd3 100755 --- a/include/boost/parameter/aux_/tag.hpp +++ b/include/boost/parameter/aux_/tag.hpp @@ -7,10 +7,12 @@ #ifndef BOOST_PARAMETER_AUX_TAG_DWA2005610_HPP #define BOOST_PARAMETER_AUX_TAG_DWA2005610_HPP -#include #include #include +#include #include + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) #include #include #include @@ -21,26 +23,11 @@ namespace boost { namespace parameter { namespace aux { - template < - typename Keyword - , typename ActualArg -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) - , typename = typename ::boost::parameter::aux - ::is_cv_reference_wrapper::type -#endif - > + template struct tag { -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) - typedef ::boost::parameter::aux::tagged_argument< - Keyword - , typename ::boost::parameter::aux - ::unwrap_cv_reference::type - > type; -#else - typedef typename ::boost::parameter::aux::unwrap_cv_reference< - ActualArg - >::type Arg; + typedef typename ::boost::parameter::aux + ::unwrap_cv_reference::type Arg; typedef typename ::boost::add_const::type ConstArg; typedef typename ::boost::remove_const::type MutArg; typedef typename ::boost::mpl::eval_if< @@ -58,7 +45,28 @@ namespace boost { namespace parameter { namespace aux { , ::boost::parameter::aux::tagged_argument_rref > >::type type; -#endif // Borland workarounds needed. + }; +}}} // namespace boost::parameter::aux_ + +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +namespace boost { namespace parameter { namespace aux { + + template < + typename Keyword + , typename ActualArg +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + , typename = typename ::boost::parameter::aux + ::is_cv_reference_wrapper::type +#endif + > + struct tag + { + typedef ::boost::parameter::aux::tagged_argument< + Keyword + , typename ::boost::parameter::aux + ::unwrap_cv_reference::type + > type; }; }}} // namespace boost::parameter::aux_ @@ -70,23 +78,14 @@ namespace boost { namespace parameter { namespace aux { template struct tag { - typedef typename ::boost::remove_reference::type Arg; - typedef typename ::boost::add_const::type ConstArg; - typedef typename ::boost::remove_const::type MutArg; - typedef typename ::boost::mpl::eval_if< - ::boost::is_lvalue_reference - , ::boost::mpl::identity< - ::boost::parameter::aux::tagged_argument - > - , ::boost::mpl::if_< - ::boost::is_scalar - , ::boost::parameter::aux::tagged_argument - , ::boost::parameter::aux::tagged_argument_rref - > - >::type type; + typedef ::boost::parameter::aux::tagged_argument< + Keyword + , typename ::boost::remove_reference::type + > type; }; }}} // namespace boost::parameter::aux_ #endif // Borland workarounds needed. +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING #endif // include guard diff --git a/include/boost/parameter/aux_/tagged_argument.hpp b/include/boost/parameter/aux_/tagged_argument.hpp index e501e62..350e849 100755 --- a/include/boost/parameter/aux_/tagged_argument.hpp +++ b/include/boost/parameter/aux_/tagged_argument.hpp @@ -7,8 +7,6 @@ #ifndef BOOST_PARAMETER_TAGGED_ARGUMENT_050328_HPP #define BOOST_PARAMETER_TAGGED_ARGUMENT_050328_HPP -#include - namespace boost { namespace parameter { namespace aux { struct error_const_lvalue_bound_to_out_parameter; @@ -43,6 +41,7 @@ namespace boost { namespace parameter { namespace aux { #include #include #include +#include #include #include #include @@ -51,8 +50,6 @@ namespace boost { namespace parameter { namespace aux { #include #include #include -#include -#include #if defined(BOOST_NO_CXX11_HDR_FUNCTIONAL) #include @@ -60,6 +57,10 @@ namespace boost { namespace parameter { namespace aux { #include #endif +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +#include +#include + namespace boost { namespace parameter { namespace aux { // Holds an lvalue reference to an argument of type Arg associated with @@ -210,85 +211,6 @@ namespace boost { namespace parameter { namespace aux { return this->get_value(); } -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) - template - inline Default& - get_with_default( - ::boost::parameter::aux::default_ const& x - , int - ) const - { - return x.value; - } - - template - inline Default&& - get_with_default( - ::boost::parameter::aux::default_r_ const& x - , int - ) const - { - return ::std::forward(x.value); - } - - template - inline reference - get_with_default( - ::boost::parameter::aux::default_ const& - , long - ) const - { - return this->get_value(); - } - - template - inline typename ::boost::mpl::apply_wrap3< - binding - , KW - , Default& - , ::boost::mpl::true_ - >::type - operator[]( - ::boost::parameter::aux::default_ const& x - ) const - { - return this->get_with_default(x, 0L); - } - - template - inline typename ::boost::parameter::aux::result_of0::type - get_with_lazy_default( - ::boost::parameter::aux::lazy_default const& x - , int - ) const - { - return x.compute_default(); - } - - template - inline reference - get_with_lazy_default( - ::boost::parameter::aux::lazy_default const& - , long - ) const - { - return this->get_value(); - } - - template - inline typename ::boost::mpl::apply_wrap3< - binding - , KW - , typename ::boost::parameter::aux::result_of0::type - , ::boost::mpl::true_ - >::type - operator[]( - ::boost::parameter::aux::lazy_default const& x - ) const - { - return this->get_with_lazy_default(x, 0L); - } -#else // !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) template inline reference operator[]( @@ -347,7 +269,6 @@ namespace boost { namespace parameter { namespace aux { , HasDefault >* ); -#endif // Borland workarounds needed. // MPL sequence support // Convenience for users @@ -356,12 +277,6 @@ namespace boost { namespace parameter { namespace aux { typedef ::boost::parameter::aux::empty_arg_list tail_type; // For dispatching to sequence intrinsics typedef ::boost::parameter::aux::arg_list_tag tag; - -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310)) - // warning suppression - private: - void operator=(type const&); -#endif }; // Holds an rvalue reference to an argument of type Arg associated with @@ -479,75 +394,6 @@ namespace boost { namespace parameter { namespace aux { return this->get_value(); } -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) - template - inline Default&& - get_with_default( - ::boost::parameter::aux::default_r_ const& x - , int - ) const - { - return ::std::forward(x.value); - } - - template - inline reference - get_with_default( - ::boost::parameter::aux::default_r_ const& - , long - ) const - { - return this->get_value(); - } - - template - inline typename ::boost::mpl::apply_wrap3< - binding - , KW - , Default&& - , ::boost::mpl::true_ - >::type - operator[]( - ::boost::parameter::aux::default_r_ const& x - ) const - { - return this->get_with_default(x, 0L); - } - - template - inline typename ::boost::parameter::aux::result_of0::type - get_with_lazy_default( - ::boost::parameter::aux::lazy_default const& x - , int - ) const - { - return x.compute_default(); - } - - template - inline reference - get_with_lazy_default( - ::boost::parameter::aux::lazy_default const& - , long - ) const - { - return this->get_value(); - } - - template - inline typename ::boost::mpl::apply_wrap3< - binding - , KW - , typename ::boost::parameter::aux::result_of0::type - , ::boost::mpl::true_ - >::type - operator[]( - ::boost::parameter::aux::lazy_default const& x - ) const - { - return this->get_with_lazy_default(x, 0L); - } -#else // !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) template inline reference operator[]( @@ -597,7 +443,6 @@ namespace boost { namespace parameter { namespace aux { , HasDefault >* ); -#endif // Borland workarounds needed. // MPL sequence support // Convenience for users @@ -609,6 +454,250 @@ namespace boost { namespace parameter { namespace aux { typedef ::boost::parameter::aux::empty_arg_list tail_type; // For dispatching to sequence intrinsics typedef ::boost::parameter::aux::arg_list_tag tag; + }; +}}} // namespace boost::parameter::aux + +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +namespace boost { namespace parameter { namespace aux { + + // Holds an lvalue reference to an argument of type Arg associated with + // keyword Keyword + template + class tagged_argument : ::boost::parameter::aux::tagged_argument_base + { + typedef typename ::boost::remove_const::type arg_type; + + public: + typedef Keyword key_type; + + // Wrap plain (non-UDT) function objects in either + // a boost::function or a std::function. -- Cromwell D. Enage + typedef typename ::boost::mpl::if_< + ::boost::is_function +#if defined(BOOST_NO_CXX11_HDR_FUNCTIONAL) + , ::boost::function +#else + , ::std::function +#endif + , Arg + >::type value_type; + + // If Arg is void_, then this type will evaluate to void_&. If the + // supplied argument is a plain function, then this type will evaluate + // to a reference-to-const function wrapper type. If the supplied + // argument is an lvalue, then Arg will be deduced to the lvalue + // reference. -- Cromwell D. Enage + typedef typename ::boost::mpl::if_< + ::boost::is_function + , value_type const& + , Arg& + >::type reference; + + private: + // Store plain functions by value, everything else by reference. + // -- Cromwell D. Enage + typename ::boost::mpl::if_< + ::boost::is_function + , value_type + , reference + >::type value; + + public: + inline explicit tagged_argument(reference x) : value(x) + { + } + + inline tagged_argument(tagged_argument const& copy) + : value(copy.value) + { + } + + // A metafunction class that, given a keyword and a default type, + // returns the appropriate result type for a keyword lookup given + // that default. + struct binding + { + template + struct apply + { + typedef typename ::boost::mpl::eval_if< + ::boost::is_same + , ::boost::mpl::if_ + , ::boost::mpl::identity + >::type type; + }; + }; + + // Comma operator to compose argument list without using parameters<>. + // Useful for argument lists with undetermined length. + template + inline ::boost::parameter::aux::arg_list< + ::boost::parameter::aux::tagged_argument + , ::boost::parameter::aux::arg_list< + ::boost::parameter::aux::tagged_argument + > + > + operator,( + ::boost::parameter::aux + ::tagged_argument const& x + ) const + { + return ::boost::parameter::aux::arg_list< + ::boost::parameter::aux::tagged_argument + , ::boost::parameter::aux::arg_list< + ::boost::parameter::aux::tagged_argument + > + >( + *this + , ::boost::parameter::aux::arg_list< + ::boost::parameter::aux::tagged_argument + >(x, ::boost::parameter::aux::empty_arg_list()) + ); + } + + // Accessor interface. + inline reference get_value() const + { + return this->value; + } + + inline reference + operator[](::boost::parameter::keyword const&) const + { + return this->get_value(); + } + +#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) || \ + BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + template + inline Default& + get_with_default( + ::boost::parameter::aux::default_ const& x + , int + ) const + { + return x.value; + } + + template + inline reference + get_with_default( + ::boost::parameter::aux::default_ const& + , long + ) const + { + return this->get_value(); + } + + template + inline typename ::boost::mpl::apply_wrap3< + binding + , KW + , Default& + , ::boost::mpl::true_ + >::type + operator[]( + ::boost::parameter::aux::default_ const& x + ) const + { + return this->get_with_default(x, 0L); + } + + template + inline typename ::boost::parameter::aux::result_of0::type + get_with_lazy_default( + ::boost::parameter::aux::lazy_default const& x + , int + ) const + { + return x.compute_default(); + } + + template + inline reference + get_with_lazy_default( + ::boost::parameter::aux::lazy_default const& + , long + ) const + { + return this->get_value(); + } + + template + inline typename ::boost::mpl::apply_wrap3< + binding + , KW + , typename ::boost::parameter::aux::result_of0::type + , ::boost::mpl::true_ + >::type + operator[]( + ::boost::parameter::aux::lazy_default const& x + ) const + { + return this->get_with_lazy_default(x, 0L); + } +#else +//#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) && \ +// !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + template + inline reference + operator[]( + ::boost::parameter::aux::default_ const& + ) const + { + return this->get_value(); + } + + template + inline reference + operator[]( + ::boost::parameter::aux::lazy_default const& + ) const + { + return this->get_value(); + } + + template + inline Default& + operator[]( + ::boost::parameter::aux::default_ const& x + ) const + { + return x.value; + } + + template + inline typename ::boost::parameter::aux::result_of0::type + operator[]( + ::boost::parameter::aux::lazy_default const& x + ) const + { + return x.compute_default(); + } + + template + static typename ParameterRequirements::has_default + satisfies(ParameterRequirements*); + + template + static typename ::boost::mpl::apply_wrap1::type + satisfies( + ::boost::parameter::aux::parameter_requirements< + key_type + , Predicate + , HasDefault + >* + ); +#endif // Function template ordering, Borland workarounds needed. + + // MPL sequence support + // Convenience for users + typedef ::boost::parameter::aux::tagged_argument type; + // For the benefit of iterators + typedef ::boost::parameter::aux::empty_arg_list tail_type; + // For dispatching to sequence intrinsics + typedef ::boost::parameter::aux::arg_list_tag tag; #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310)) // warning suppression @@ -618,5 +707,6 @@ namespace boost { namespace parameter { namespace aux { }; }}} // namespace boost::parameter::aux +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING #endif // include guard diff --git a/include/boost/parameter/aux_/tagged_argument_fwd.hpp b/include/boost/parameter/aux_/tagged_argument_fwd.hpp index c454ed6..11acf19 100755 --- a/include/boost/parameter/aux_/tagged_argument_fwd.hpp +++ b/include/boost/parameter/aux_/tagged_argument_fwd.hpp @@ -11,10 +11,18 @@ namespace boost { namespace parameter { namespace aux { template class tagged_argument; +}}} // namespace boost::parameter::aux + +#include + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +namespace boost { namespace parameter { namespace aux { template struct tagged_argument_rref; }}} // namespace boost::parameter::aux +#endif #endif // include guard diff --git a/include/boost/parameter/aux_/template_keyword.hpp b/include/boost/parameter/aux_/template_keyword.hpp index 107cb40..3ff0e8f 100755 --- a/include/boost/parameter/aux_/template_keyword.hpp +++ b/include/boost/parameter/aux_/template_keyword.hpp @@ -17,15 +17,39 @@ namespace boost { namespace parameter { namespace aux { #include #include #include -#include #include + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +#include #include +#else +#include +#include +#endif namespace boost { namespace parameter { namespace aux { +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + template + struct is_template_keyword_aux + : ::boost::mpl::if_< + ::boost::is_convertible< + T* + , ::boost::parameter::aux::template_keyword_base const* + > + , ::boost::mpl::true_ + , ::boost::mpl::false_ + >::type + { + }; +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING + template struct is_template_keyword : ::boost::mpl::if_< +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + // Cannot use is_convertible<> to check if T is derived from + // template_keyword_base. -- Cromwell D. Enage ::boost::is_base_of< ::boost::parameter::aux::template_keyword_base , typename ::boost::remove_const< @@ -34,6 +58,11 @@ namespace boost { namespace parameter { namespace aux { > , ::boost::mpl::true_ , ::boost::mpl::false_ +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + ::boost::is_lvalue_reference + , ::boost::mpl::false_ + , ::boost::parameter::aux::is_template_keyword_aux +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING >::type { }; diff --git a/include/boost/parameter/aux_/unwrap_cv_reference.hpp b/include/boost/parameter/aux_/unwrap_cv_reference.hpp old mode 100644 new mode 100755 index a545188..b2ffe2a --- a/include/boost/parameter/aux_/unwrap_cv_reference.hpp +++ b/include/boost/parameter/aux_/unwrap_cv_reference.hpp @@ -103,7 +103,7 @@ namespace boost { namespace parameter { namespace aux { struct unwrap_cv_reference : T { }; -#else // !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#else // !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) // Needed for unwrap_cv_reference below. T might be const, so // eval_if<> might fail because of deriving from T const on EDG. template diff --git a/include/boost/parameter/config.hpp b/include/boost/parameter/config.hpp index 74669c0..a68a88d 100755 --- a/include/boost/parameter/config.hpp +++ b/include/boost/parameter/config.hpp @@ -10,27 +10,40 @@ #include #include -// Require correct SFINAE support, needed explicitly by tagged_argument & -// keyword & cast; correct function template ordering, needed by the code -// generation macros; and the ability to handle multiple parameter packs, -// needed by parameters. Older versions of GCC either don't have the latter -// ability or cannot disambiguate between keyword's overloaded -// operators. +// Allow projects to #define BOOST_PARAMETER_DISABLE_PERFECT_FORWARDING to +// turn off perfect forwarding as necessary. Otherwise, also require correct +// SFINAE support, needed explicitly by tagged_argument & keyword & cast; +// correct function template ordering, needed by the code generation macros; +// rvalue references, needed throughout; variadic templates, needed by +// parameters; and the ability to handle multiple parameter packs, needed by +// parameters. Older versions of GCC either don't have the latter ability or +// cannot disambiguate between keyword's overloaded operators. // -- Cromwell D. Enage -#if defined(BOOST_NO_SFINAE) || \ - defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) || \ - defined(BOOST_NO_CXX11_RVALUE_REFERENCES) || \ - defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) || \ - BOOST_WORKAROUND(BOOST_GCC, < 40900) -#error Your compiler does not support perfect forwarding. +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) && \ + !defined(BOOST_PARAMETER_DISABLE_PERFECT_FORWARDING) && \ + !defined(BOOST_NO_SFINAE) && \ + !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) && \ + !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \ + !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && \ + !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \ + !BOOST_WORKAROUND(BOOST_GCC, < 40900) +#define BOOST_PARAMETER_HAS_PERFECT_FORWARDING #endif -#include - +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +#if !defined(BOOST_PARAMETER_MAX_ARITY) // Unlike the variadic MPL sequences provided by Boost.Fusion, // boost::mpl::vector has a size limit. -- Cromwell D. Enage -#if !defined(BOOST_PARAMETER_MAX_ARITY) +#include #define BOOST_PARAMETER_MAX_ARITY BOOST_MPL_LIMIT_VECTOR_SIZE #endif +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +#if !defined(BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY) +#define BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY 11 +#endif +#if !defined(BOOST_PARAMETER_MAX_ARITY) +#define BOOST_PARAMETER_MAX_ARITY 8 +#endif +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING #endif // include guard diff --git a/include/boost/parameter/keyword.hpp b/include/boost/parameter/keyword.hpp index 5ee0f6a..93bb48a 100755 --- a/include/boost/parameter/keyword.hpp +++ b/include/boost/parameter/keyword.hpp @@ -7,10 +7,13 @@ #ifndef KEYWORD_050328_HPP #define KEYWORD_050328_HPP -#include -#include #include #include +#include +#include + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + #include #include #include @@ -309,6 +312,207 @@ namespace boost { namespace parameter { ::keyword::instance = ::boost::parameter::keyword(); }} // namespace boost::parameter +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +#if !defined(BOOST_NO_SFINAE) +#include +#include +#include +#include +#include +#include +#include +#endif // BOOST_NO_SFINAE + +namespace boost { namespace parameter { + + // Instances of unique specializations of keyword<...> serve to + // associate arguments with parameter names. For example: + // + // struct rate_; // parameter names + // struct skew_; + // + // namespace + // { + // keyword rate; // keywords + // keyword skew; + // } + // + // ... + // + // f(rate = 1, skew = 2.4); + template + struct keyword + { + template +#if defined(BOOST_NO_SFINAE) + inline typename ::boost::parameter::aux::tag::type +#else + inline typename ::boost::lazy_enable_if< + typename ::boost::mpl::eval_if< + ::boost::is_scalar + , ::boost::mpl::true_ + , ::boost::mpl::eval_if< + ::boost::is_same< + typename Tag::qualifier + , ::boost::parameter::in_reference + > + , ::boost::mpl::true_ + , ::boost::mpl::if_< + ::boost::is_same< + typename Tag::qualifier + , ::boost::parameter::forward_reference + > + , ::boost::mpl::true_ + , ::boost::mpl::false_ + > + > + >::type + , ::boost::parameter::aux::tag + >::type BOOST_CONSTEXPR +#endif // BOOST_NO_SFINAE + operator=(T const& x) const + { + typedef typename ::boost::parameter::aux + ::tag::type result; + return result(x); + } + + template +#if defined(BOOST_NO_SFINAE) + inline ::boost::parameter::aux::default_ +#else + inline typename ::boost::enable_if< + typename ::boost::mpl::eval_if< + ::boost::is_scalar + , ::boost::mpl::true_ + , ::boost::mpl::eval_if< + ::boost::is_same< + typename Tag::qualifier + , ::boost::parameter::in_reference + > + , ::boost::mpl::true_ + , ::boost::mpl::if_< + ::boost::is_same< + typename Tag::qualifier + , ::boost::parameter::forward_reference + > + , ::boost::mpl::true_ + , ::boost::mpl::false_ + > + > + >::type + , ::boost::parameter::aux::default_ + >::type +#endif // BOOST_NO_SFINAE + operator|(Default const& d) const + { + return ::boost::parameter::aux::default_(d); + } + + template +#if defined(BOOST_NO_SFINAE) + inline typename ::boost::parameter::aux::tag::type +#else + inline typename ::boost::lazy_enable_if< + typename ::boost::mpl::eval_if< + typename ::boost::mpl::if_< + ::boost::is_same< + typename Tag::qualifier + , ::boost::parameter::out_reference + > + , ::boost::mpl::true_ + , ::boost::is_same< + typename Tag::qualifier + , ::boost::parameter::forward_reference + > + >::type + , ::boost::mpl::if_< + ::boost::is_const + , ::boost::mpl::false_ + , ::boost::mpl::true_ + > + , ::boost::mpl::false_ + >::type + , ::boost::parameter::aux::tag + >::type BOOST_CONSTEXPR +#endif // BOOST_NO_SFINAE + operator=(T& x) const + { + typedef typename ::boost::parameter::aux + ::tag::type result; + return result(x); + } + + template +#if defined(BOOST_NO_SFINAE) + inline ::boost::parameter::aux::default_ +#else + inline typename ::boost::enable_if< + typename ::boost::mpl::eval_if< + typename ::boost::mpl::if_< + ::boost::is_same< + typename Tag::qualifier + , ::boost::parameter::out_reference + > + , ::boost::mpl::true_ + , ::boost::is_same< + typename Tag::qualifier + , ::boost::parameter::forward_reference + > + >::type + , ::boost::mpl::if_< + ::boost::is_const + , ::boost::mpl::false_ + , ::boost::mpl::true_ + > + , ::boost::mpl::false_ + >::type + , ::boost::parameter::aux::default_ + >::type +#endif // BOOST_NO_SFINAE + operator|(Default& d) const + { + return ::boost::parameter::aux::default_(d); + } + + template + inline ::boost::parameter::aux::lazy_default + operator||(Default const& d) const + { + return ::boost::parameter::aux + ::lazy_default(d); + } + + template + inline ::boost::parameter::aux::lazy_default + operator||(Default& d) const + { + return ::boost::parameter::aux::lazy_default(d); + } + + public: // Insurance against ODR violations + // Users will need to define their keywords in header files. To + // prevent ODR violations, it's important that the keyword used in + // every instantiation of a function template is the same object. + // We provide a reference to a common instance of each keyword + // object and prevent construction by users. + static ::boost::parameter::keyword const instance; + + // This interface is deprecated. + static ::boost::parameter::keyword& get() + { + return const_cast< ::boost::parameter::keyword&>(instance); + } + }; + + template + ::boost::parameter::keyword const ::boost::parameter + ::keyword::instance = ::boost::parameter::keyword(); +}} // namespace boost::parameter + +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING + #include // Reduces boilerplate required to declare and initialize keywords without diff --git a/include/boost/parameter/macros.hpp b/include/boost/parameter/macros.hpp index 0af9059..5ff20fc 100755 --- a/include/boost/parameter/macros.hpp +++ b/include/boost/parameter/macros.hpp @@ -36,6 +36,8 @@ #include #include +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + #define BOOST_PARAMETER_FUN_0(z, n, params) \ BOOST_PP_TUPLE_ELEM(3, 0, params) BOOST_PP_TUPLE_ELEM(3, 1, params)() \ { \ @@ -85,6 +87,101 @@ )(z, n, params) /**/ +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +#define BOOST_PARAMETER_FUN_DEFN_0(z, n, params) \ + template \ + BOOST_PP_TUPLE_ELEM(3, 0, params) \ + BOOST_PP_TUPLE_ELEM(3, 1, params)( \ + BOOST_PP_ENUM_BINARY_PARAMS_Z(z, n, T, const& p) \ + BOOST_PARAMETER_MATCH_TYPE_Z( \ + z, n, BOOST_PP_TUPLE_ELEM(3, 2, params) \ + ) \ + ) \ + { \ + return BOOST_PP_CAT( \ + BOOST_PP_TUPLE_ELEM(3, 1, params) \ + , _with_named_params \ + )(kw(BOOST_PP_ENUM_PARAMS_Z(z, n, p))); \ + } +/**/ + +#include + +#define BOOST_PARAMETER_FUN_0(z, n, seq) \ + BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq))) \ + BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)))() \ + { \ + return BOOST_PP_CAT( \ + BOOST_PP_TUPLE_ELEM( \ + 3, 1, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq)) \ + ) \ + , _with_named_params \ + )( \ + BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_TAIL(seq))) \ + ()() \ + ); \ + } +/**/ + +#include +#include + +#define BOOST_PARAMETER_FUN_DEFN_R(r, seq) \ + template < \ + BOOST_PP_ENUM_PARAMS( \ + BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)) \ + , typename T \ + ) \ + > BOOST_PP_TUPLE_ELEM(3, 0, BOOST_PP_SEQ_HEAD(seq)) \ + BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_SEQ_HEAD(seq))( \ + BOOST_PARAMETER_AUX_PP_BINARY_SEQ_TO_ARGS( \ + BOOST_PP_SEQ_TAIL(seq), (T)(p) \ + ) \ + BOOST_PARAMETER_MATCH_TYPE( \ + BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)) \ + , BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_HEAD(seq)) \ + ) \ + ) \ + { \ + return BOOST_PP_CAT( \ + BOOST_PP_TUPLE_ELEM(3, 1, BOOST_PP_SEQ_HEAD(seq)) \ + , _with_named_params \ + )( \ + kw( \ + BOOST_PP_ENUM_PARAMS( \ + BOOST_PP_SEQ_SIZE(BOOST_PP_SEQ_TAIL(seq)), p \ + ) \ + ) \ + ); \ + } +/**/ + +#include +#include + +#define BOOST_PARAMETER_FUN_DEFN_1(z, n, params) \ + BOOST_PP_IF( \ + n \ + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_Z \ + , BOOST_PARAMETER_FUN_0 \ + )(z, n, (BOOST_PARAMETER_FUN_DEFN_R)(params)) +/**/ + +#include + +#define BOOST_PARAMETER_FUN_DECL(z, n, params) \ + BOOST_PP_CAT( \ + BOOST_PARAMETER_FUN_DEFN_ \ + , BOOST_PP_LESS( \ + n \ + , BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY \ + ) \ + )(z, n, params) +/**/ + +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING + #include #include diff --git a/include/boost/parameter/match.hpp b/include/boost/parameter/match.hpp old mode 100644 new mode 100755 index 2fa3f17..edb59f9 --- a/include/boost/parameter/match.hpp +++ b/include/boost/parameter/match.hpp @@ -1,42 +1,34 @@ -// Copyright David Abrahams 2005. Distributed under the Boost -// Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// Copyright David Abrahams 2005. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + #ifndef BOOST_PARAMETER_MATCH_DWA2005714_HPP -# define BOOST_PARAMETER_MATCH_DWA2005714_HPP +#define BOOST_PARAMETER_MATCH_DWA2005714_HPP -# include -# include +#include -# if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) -// Temporary version of BOOST_PP_SEQ_ENUM until Paul M. integrates the workaround. -# define BOOST_PARAMETER_SEQ_ENUM_I(size,seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, size) seq -# define BOOST_PARAMETER_SEQ_ENUM(seq) BOOST_PARAMETER_SEQ_ENUM_I(BOOST_PP_SEQ_SIZE(seq), seq) -# else -# define BOOST_PARAMETER_SEQ_ENUM(seq) BOOST_PP_SEQ_ENUM(seq) -# endif +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#include +#include +#include +#include +#include -# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#define BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes) \ + BOOST_PP_ENUM_TRAILING_PARAMS( \ + BOOST_PP_SUB( \ + BOOST_PARAMETER_MAX_ARITY \ + , BOOST_PP_SEQ_SIZE(ArgTypes) \ + ) \ + , ::boost::parameter::void_ BOOST_PP_INTERCEPT \ + ) +/**/ +#else +#define BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes) +#endif -# include -# include -# include -# include -# include - -# define BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes) \ - BOOST_PP_ENUM_TRAILING_PARAMS( \ - BOOST_PP_SUB( \ - BOOST_PARAMETER_MAX_ARITY \ - , BOOST_PP_SEQ_SIZE(ArgTypes) \ - ) \ - , ::boost::parameter::void_ BOOST_PP_INTERCEPT \ - ) - -# else - -# define BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes) - -# endif +#include // // Generates, e.g. @@ -45,11 +37,12 @@ // // with workarounds for Borland compatibility. // +#define BOOST_PARAMETER_MATCH(ParameterSpec, ArgTypes, name) \ + typename ParameterSpec::match< \ + BOOST_PARAMETER_SEQ_ENUM(ArgTypes) \ + BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes) \ + >::type name = ParameterSpec() +/**/ -# define BOOST_PARAMETER_MATCH(ParameterSpec, ArgTypes, name) \ - typename ParameterSpec ::match< \ - BOOST_PARAMETER_SEQ_ENUM(ArgTypes) \ - BOOST_PARAMETER_MATCH_DEFAULTS(ArgTypes) \ - >::type name = ParameterSpec () +#endif // include guard -#endif // BOOST_PARAMETER_MATCH_DWA2005714_HPP diff --git a/include/boost/parameter/parameters.hpp b/include/boost/parameter/parameters.hpp index 4e5febc..73db121 100755 --- a/include/boost/parameter/parameters.hpp +++ b/include/boost/parameter/parameters.hpp @@ -9,6 +9,8 @@ #include +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + namespace boost { namespace parameter { namespace aux { // The make_arg_list<> metafunction produces a reversed arg_list, @@ -208,5 +210,322 @@ namespace boost { namespace parameter { }; }} // namespace boost::parameter +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if ( \ + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY < \ + BOOST_PARAMETER_MAX_ARITY \ + ) +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if !defined(BOOST_NO_SFINAE) && \ + !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) +#include +#include +#include +#include +#include +#endif + +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) +#include +#else +#include +#endif + +#include + +namespace boost { namespace parameter { + + template < + typename PS0 + , BOOST_PP_ENUM_SHIFTED( + BOOST_PARAMETER_MAX_ARITY, BOOST_PARAMETER_template_args, PS + ) + > + struct parameters + { + typedef typename BOOST_PARAMETER_build_deduced_list( + BOOST_PARAMETER_MAX_ARITY + , ::boost::parameter::aux::make_deduced_items + , PS + )::type deduced_list; + + // If the elements of NamedList match the criteria of overload + // resolution, returns a type which can be constructed from + // parameters. Otherwise, this is not a valid metafunction + // (no nested ::type). +#if !defined(BOOST_NO_SFINAE) && \ + !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) + // If NamedList satisfies the PS0, PS1, ..., this is a metafunction + // returning parameters. Otherwise it has no nested ::type. + template + struct match_base + : ::boost::mpl::if_< + // ::boost::mpl::and_< + // aux::satisfies_requirements_of + // , ::boost::mpl::and_< + // aux::satisfies_requirements_of... + // ..., ::boost::mpl::true_ + // ...> > + typename BOOST_PP_REPEAT( + BOOST_PARAMETER_MAX_ARITY + , BOOST_PARAMETER_satisfies_begin + , PS + ) + ::boost::is_same< + typename ::boost::mpl + ::second::type + , ::boost::parameter::void_ + > + BOOST_PP_REPEAT( + BOOST_PARAMETER_MAX_ARITY + , BOOST_PARAMETER_satisfies_end + , ::boost::mpl::false_ + )::type + , ::boost::mpl::identity< + ::boost::parameter::parameters< + BOOST_PP_ENUM_PARAMS(BOOST_PARAMETER_MAX_ARITY, PS) + > + > + , ::boost::parameter::void_ + > + { + }; +#endif // SFINAE enabled, not Borland. + + // Specializations are to be used as an optional argument + // to eliminate overloads via SFINAE. + template < +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + // Borland simply can't handle default arguments in member + // class templates. People wishing to write portable code can + // explicitly specify BOOST_PARAMETER_MAX_ARITY arguments. + BOOST_PP_ENUM_PARAMS(BOOST_PARAMETER_MAX_ARITY, typename A) +#else + BOOST_PP_ENUM_BINARY_PARAMS( + BOOST_PARAMETER_MAX_ARITY + , typename A + , = ::boost::parameter::void_ BOOST_PP_INTERCEPT + ) +#endif + > + struct match +#if !defined(BOOST_NO_SFINAE) && \ + !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) + : ::boost::parameter::parameters< + BOOST_PP_ENUM_PARAMS(BOOST_PARAMETER_MAX_ARITY, PS) + >::BOOST_NESTED_TEMPLATE match_base< + typename ::boost::parameter::aux::make_arg_list< + typename BOOST_PARAMETER_build_arg_list( + BOOST_PARAMETER_MAX_ARITY + , ::boost::parameter::aux::make_items + , PS + , A + )::type + , deduced_list + , ::boost::parameter::aux::tag_keyword_arg + // Don't emit errors when doing SFINAE. + , ::boost::mpl::false_ + >::type + >::type + { + }; +#else + { + typedef ::boost::parameter::parameters< + BOOST_PP_ENUM_PARAMS(BOOST_PARAMETER_MAX_ARITY, PS) + > type; + }; +#endif // SFINAE enabled, not Borland. + + // Metafunction that returns an ArgumentPack. + + // TODO, bind has to instantiate the error type in the result + // of make_arg_list. + + template < +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) + // Borland simply can't handle default arguments in member + // class templates. People wishing to write portable code can + // explicitly specify BOOST_PARAMETER_MAX_ARITY arguments + BOOST_PP_ENUM_PARAMS(BOOST_PARAMETER_MAX_ARITY, typename A) +#else + BOOST_PP_ENUM_BINARY_PARAMS( + BOOST_PARAMETER_MAX_ARITY + , typename A + , = ::boost::parameter::void_ BOOST_PP_INTERCEPT + ) +#endif + > + struct bind + { + typedef typename ::boost::parameter::aux::make_arg_list< + typename BOOST_PARAMETER_build_arg_list( + BOOST_PARAMETER_MAX_ARITY + , ::boost::parameter::aux::make_items + , PS + , A + )::type + , deduced_list + , ::boost::parameter::aux::tag_template_keyword_arg + >::type result; + + typedef typename ::boost::mpl::first::type type; + }; + + BOOST_PP_REPEAT( + BOOST_PARAMETER_MAX_ARITY + , BOOST_PARAMETER_forward_typedef + , (PS)(parameter_spec) + ) + + // The function call operator is used to build an arg_list that + // labels the positional parameters and maintains whatever other + // tags may have been specified by the caller. + // + // !!!NOTE!!! + // + // The make_arg_list<> metafunction produces a reversed arg_list, + // so pass the arguments to the arg_list constructor reversed in turn. + inline ::boost::parameter::aux::empty_arg_list operator()() const + { + return ::boost::parameter::aux::empty_arg_list(); + } + +#if (0 < BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY) + BOOST_PP_REPEAT( + BOOST_PP_MIN( + BOOST_PP_INC(BOOST_PARAMETER_MAX_ARITY) + , BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY + ) + , BOOST_PARAMETER_AUX_PP_BINARY_SEQ_FOR_EACH_Z + , (BOOST_PARAMETER_function_call_op_overload_R)(_) + ) +#if ( \ + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY < \ + BOOST_PARAMETER_MAX_ARITY \ + ) +#define BOOST_PP_ITERATION_PARAMS_1 \ + (3,( \ + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY \ + , BOOST_PARAMETER_MAX_ARITY \ + , \ + )) +#include BOOST_PP_ITERATE() +#endif +#else // (0 == BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY) + template + typename ::boost::mpl::first< + typename ::boost::parameter::aux::make_arg_list< + ::boost::parameter::aux::item< + PS0,A0 + > + , deduced_list + , ::boost::parameter::aux::tag_keyword_arg_ref + >::type + >::type + operator()(A0& a0) const + { + typedef typename ::boost::parameter::aux::make_arg_list< + ::boost::parameter::aux::item< + PS0,A0 + > + , deduced_list + , ::boost::parameter::aux::tag_keyword_arg_ref + >::type result; + + typedef typename ::boost::mpl::first::type result_type; + typedef typename ::boost::mpl::second::type error; + error(); + + return result_type( + a0 + // , void_(), void_(), void_() ... + BOOST_PP_ENUM_TRAILING_PARAMS( + BOOST_PP_SUB(BOOST_PARAMETER_MAX_ARITY, 1) + , ::boost::parameter::aux::void_reference() BOOST_PP_INTERCEPT + ) + ); + } + + template + typename ::boost::mpl::first< + typename ::boost::parameter::aux::make_arg_list< + ::boost::parameter::aux::item< + PS0,A0 + , ::boost::parameter::aux::item< + PS1,A1 + > + > + , deduced_list + , ::boost::parameter::aux::tag_keyword_arg_ref + >::type + >::type + operator()(A0& a0, A1& a1) const + { + typedef typename ::boost::parameter::aux::make_arg_list< + ::boost::parameter::aux::item< + PS0,A0 + , ::boost::parameter::aux::item< + PS1,A1 + > + > + , deduced_list + , ::boost::parameter::aux::tag_keyword_arg + >::type result; + + typedef typename ::boost::mpl::first::type result_type; + typedef typename ::boost::mpl::second::type error; + error(); + + return result_type( + a1 + , a0 + // , void_(), void_() ... + BOOST_PP_ENUM_TRAILING_PARAMS( + BOOST_PP_SUB(BOOST_PARAMETER_MAX_ARITY, 2) + , ::boost::parameter::aux::void_reference() BOOST_PP_INTERCEPT + ) + ); + } + +#if (2 < BOOST_PARAMETER_MAX_ARITY) + // Higher arities are handled by the preprocessor +#define BOOST_PP_ITERATION_PARAMS_1 \ + (3,( \ + 3 \ + , BOOST_PARAMETER_MAX_ARITY \ + , \ + )) +#include BOOST_PP_ITERATE() +#endif +#endif // exponential overloads + }; +}} // namespace boost::parameter + +#include + +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING #endif // include guard diff --git a/include/boost/parameter/preprocessor.hpp b/include/boost/parameter/preprocessor.hpp old mode 100644 new mode 100755 index f5fcc54..911ff7f --- a/include/boost/parameter/preprocessor.hpp +++ b/include/boost/parameter/preprocessor.hpp @@ -65,7 +65,8 @@ // accessible via args and keywords only. #define BOOST_PARAMETER_CONSTRUCTOR(class_, base, tag_namespace, args) \ BOOST_PARAMETER_CONSTRUCTOR_AUX( \ - class_, base, tag_namespace, BOOST_PARAMETER_FLATTEN(2, 2, 3, args) \ + class_, base, tag_namespace \ + , BOOST_PARAMETER_AUX_PP_FLATTEN(2, 2, 3, args) \ ) /**/ @@ -73,7 +74,8 @@ // accessible via args and keywords only. #define BOOST_PARAMETER_BASIC_FUNCTION(result, name, tag_namespace, args) \ BOOST_PARAMETER_BASIC_FUNCTION_AUX( \ - result, name, tag_namespace, BOOST_PARAMETER_FLATTEN(2, 2, 3, args) \ + result, name, tag_namespace \ + , BOOST_PARAMETER_AUX_PP_FLATTEN(2, 2, 3, args) \ ) /**/ @@ -81,7 +83,8 @@ // are accessible via args and keywords only. #define BOOST_PARAMETER_BASIC_MEMBER_FUNCTION(result, name, tag_ns, args) \ BOOST_PARAMETER_BASIC_MEMBER_FUNCTION_AUX( \ - result, name, tag_ns, BOOST_PARAMETER_FLATTEN(2, 2, 3, args), 0 \ + result, name, tag_ns \ + , BOOST_PARAMETER_AUX_PP_FLATTEN(2, 2, 3, args), 0 \ ) /**/ @@ -89,7 +92,8 @@ // header. All arguments are accessible via args and keywords only. #define BOOST_PARAMETER_BASIC_CONST_MEMBER_FUNCTION(r, name, tag_ns, args) \ BOOST_PARAMETER_BASIC_MEMBER_FUNCTION_AUX( \ - r, name, tag_ns, BOOST_PARAMETER_FLATTEN(2, 2, 3, args), 1 \ + r, name, tag_ns \ + , BOOST_PARAMETER_AUX_PP_FLATTEN(2, 2, 3, args), 1 \ ) /**/ @@ -109,7 +113,8 @@ // accessible via args and keywords, as well as by name. #define BOOST_PARAMETER_FUNCTION(result, name, tag_namespace, args) \ BOOST_PARAMETER_FUNCTION_AUX( \ - result, name, tag_namespace, BOOST_PARAMETER_FLATTEN(3, 2, 3, args) \ + result, name, tag_namespace \ + , BOOST_PARAMETER_AUX_PP_FLATTEN(3, 2, 3, args) \ ) /**/ @@ -130,7 +135,7 @@ #define BOOST_PARAMETER_MEMBER_FUNCTION(result, name, tag_ns, args) \ BOOST_PARAMETER_MEMBER_FUNCTION_AUX( \ result, name, name, tag_ns, 0 \ - , BOOST_PARAMETER_FLATTEN(3, 2, 3, args) \ + , BOOST_PARAMETER_AUX_PP_FLATTEN(3, 2, 3, args) \ ) /**/ @@ -140,7 +145,7 @@ #define BOOST_PARAMETER_CONST_MEMBER_FUNCTION(result, name, tag_ns, args) \ BOOST_PARAMETER_MEMBER_FUNCTION_AUX( \ result, name, name, tag_ns, 1 \ - , BOOST_PARAMETER_FLATTEN(3, 2, 3, args) \ + , BOOST_PARAMETER_AUX_PP_FLATTEN(3, 2, 3, args) \ ) /**/ @@ -149,7 +154,7 @@ #define BOOST_PARAMETER_FUNCTION_CALL_OPERATOR(result, tag_ns, args) \ BOOST_PARAMETER_MEMBER_FUNCTION_AUX( \ result, operator(), operator, tag_ns, 0 \ - , BOOST_PARAMETER_FLATTEN(3, 2, 3, args) \ + , BOOST_PARAMETER_AUX_PP_FLATTEN(3, 2, 3, args) \ ) /**/ @@ -159,7 +164,7 @@ #define BOOST_PARAMETER_CONST_FUNCTION_CALL_OPERATOR(result, tag_ns, args) \ BOOST_PARAMETER_MEMBER_FUNCTION_AUX( \ result, operator(), operator, tag_ns, 1 \ - , BOOST_PARAMETER_FLATTEN(3, 2, 3, args) \ + , BOOST_PARAMETER_AUX_PP_FLATTEN(3, 2, 3, args) \ ) /**/ diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 1a12aa2..721c695 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -22,8 +22,24 @@ alias parameter_standard_tests [ run singular.cpp : : : : : off ] [ run tutorial.cpp : : : : : off ] [ run compose.cpp : : : : : off ] - [ run sfinae.cpp : : : : : off ] - [ run optional_deduced_sfinae.cpp : : : : : off ] + [ run sfinae.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=2 + : + : + off + ] + [ run optional_deduced_sfinae.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=4 + : + : + off + ] [ run efficiency.cpp : : @@ -33,12 +49,32 @@ alias parameter_standard_tests release off ] - [ run evaluate_category.cpp : : : : : off ] - [ run evaluate_category_16.cpp : : : : : off ] + [ run evaluate_category.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=4 + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY=5 + : + : + off + ] + [ run evaluate_category_16.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=16 + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY=0 + : + : + off + ] [ run preprocessor_eval_category.cpp : : : + BOOST_PARAMETER_MAX_ARITY=4 + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY=5 : : off @@ -47,32 +83,102 @@ alias parameter_standard_tests : : : + BOOST_PARAMETER_MAX_ARITY=2 + : + : + off + ] + [ run basics.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=4 + : + : + off + ] + [ run mpl.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=4 + : + : + off + ] + [ run earwicker.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=4 + : + : + off + ] + [ run macros.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=4 + : + : + off + ] + [ run preprocessor.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=4 + : + : + off + ] + [ run preprocessor_deduced.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=4 + : + : + off + ] + [ run deduced.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=4 : : off ] - [ run basics.cpp : : : : : off ] - [ run mpl.cpp : : : : : off ] - [ run earwicker.cpp : : : : : off ] - [ run macros.cpp : : : : : off ] - [ run preprocessor.cpp : : : : : off ] - [ run preprocessor_deduced.cpp : : : : : off ] - [ run deduced.cpp : : : : : off ] [ run deduced_dependent_predicate.cpp : : : + BOOST_PARAMETER_MAX_ARITY=4 : : off ] [ compile unwrap_cv_reference.cpp ] - [ compile ntp.cpp ] + [ compile ntp.cpp + : + BOOST_PARAMETER_MAX_ARITY=4 + ] [ compile function_type_tpl_param.cpp ] - [ compile-fail duplicates.cpp : : duplicates_fail ] - [ compile-fail deduced_unmatched_arg.cpp : : deduced_unmatched_arg_fail ] + [ compile-fail duplicates.cpp + : + : + duplicates_fail + ] + [ compile-fail deduced_unmatched_arg.cpp + : + : + deduced_unmatched_arg_fail + ] [ compile-fail basics.cpp : + BOOST_PARAMETER_MAX_ARITY=4 LIBS_PARAMETER_TEST_COMPILE_FAILURE : basics_fail @@ -91,6 +197,8 @@ alias parameter_standard_tests ] [ compile-fail evaluate_category.cpp : + BOOST_PARAMETER_MAX_ARITY=4 + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY=5 LIBS_PARAMETER_TEST_COMPILE_FAILURE : evaluate_category_fail @@ -121,11 +229,20 @@ alias parameter_literate_tests : off ] - [ run literate/top-level0.cpp : : : : : off ] + [ run literate/top-level0.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=3 + : + : + off + ] [ run literate/predicate-requirements0.cpp : : : + BOOST_PARAMETER_MAX_ARITY=5 : : off @@ -134,6 +251,7 @@ alias parameter_literate_tests : : : + BOOST_PARAMETER_MAX_ARITY=2 : : off @@ -154,14 +272,47 @@ alias parameter_literate_tests : off ] - [ run literate/namespaces0.cpp : : : : : off ] - [ run literate/namespaces1.cpp : : : : : off ] - [ run literate/namespaces2.cpp : : : : : off ] - [ run literate/namespaces3.cpp : : : : : off ] + [ run literate/namespaces0.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=2 + : + : + off + ] + [ run literate/namespaces1.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=2 + : + : + off + ] + [ run literate/namespaces2.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=2 + : + : + off + ] + [ run literate/namespaces3.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=2 + : + : + off + ] [ run literate/parameter-enabled-constructors0.cpp : : : + BOOST_PARAMETER_MAX_ARITY=2 : : off @@ -170,6 +321,7 @@ alias parameter_literate_tests : : : + BOOST_PARAMETER_MAX_ARITY=4 : : off @@ -178,6 +330,7 @@ alias parameter_literate_tests : : : + BOOST_PARAMETER_MAX_ARITY=5 : : off @@ -186,6 +339,7 @@ alias parameter_literate_tests : : : + BOOST_PARAMETER_MAX_ARITY=5 : : off @@ -194,6 +348,7 @@ alias parameter_literate_tests : : : + BOOST_PARAMETER_MAX_ARITY=2 : : off @@ -201,17 +356,44 @@ alias parameter_literate_tests [ compile literate/template-keywords0.cpp ] [ compile literate/template-keywords1.cpp ] [ compile literate/headers-and-namespaces0.cpp ] - [ compile literate/handling-out-parameters0.cpp ] - [ compile literate/writing-the-function0.cpp ] + [ compile literate/handling-out-parameters0.cpp + : + BOOST_PARAMETER_MAX_ARITY=5 + ] + [ compile literate/writing-the-function0.cpp + : + BOOST_PARAMETER_MAX_ARITY=5 + ] [ compile literate/defining-the-keywords0.cpp ] [ compile literate/defining-the-keywords1.cpp ] - [ compile literate/exercising-the-code-so-far0.cpp ] - [ compile literate/optional-parameters0.cpp ] - [ compile literate/static-member-functions0.cpp ] - [ compile literate/required-parameters0.cpp ] - [ compile literate/class-template-skeleton0.cpp ] - [ compile literate/parameter-enabled-member-functions0.cpp ] - [ compile literate/parameter-enabled-member-functions1.cpp ] + [ compile literate/exercising-the-code-so-far0.cpp + : + BOOST_PARAMETER_MAX_ARITY=4 + ] + [ compile literate/optional-parameters0.cpp + : + BOOST_PARAMETER_MAX_ARITY=5 + ] + [ compile literate/static-member-functions0.cpp + : + BOOST_PARAMETER_MAX_ARITY=2 + ] + [ compile literate/required-parameters0.cpp + : + BOOST_PARAMETER_MAX_ARITY=2 + ] + [ compile literate/class-template-skeleton0.cpp + : + BOOST_PARAMETER_MAX_ARITY=4 + ] + [ compile literate/parameter-enabled-member-functions0.cpp + : + BOOST_PARAMETER_MAX_ARITY=2 + ] + [ compile literate/parameter-enabled-member-functions1.cpp + : + BOOST_PARAMETER_MAX_ARITY=2 + ] ; alias parameter_python_test @@ -221,92 +403,106 @@ alias parameter_python_test alias parameter_macros_eval_category : - [ run macros_eval_category.cpp : : : : : off ] + [ run macros_eval_category.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=10 + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY=11 + : + : + off + ] + ; + +alias parameter_macros_eval_category_cxx03 + : + [ run macros_eval_category.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=10 + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY=0 + : + : + off + ] ; alias parameter_evaluate_category_10 : - [ run evaluate_category_10.cpp : : : : : off ] + [ run evaluate_category_10.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=10 + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY=11 + : + : + off + ] + ; + +alias parameter_evaluate_category_10_cxx03 + : + [ run evaluate_category_10.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=10 + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY=0 + : + : + off + ] ; alias parameter_preprocessor_eval_cat_8 : - [ run preprocessor_eval_cat_8.cpp : : : : : off ] + [ run preprocessor_eval_cat_8.cpp + : + : + : + BOOST_PARAMETER_MAX_ARITY=8 + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY=9 + : + : + off + ] ; alias parameter_preprocessor_eval_cat_fail : [ compile-fail preprocessor_eval_category.cpp : + BOOST_PARAMETER_MAX_ARITY=8 + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY=9 LIBS_PARAMETER_TEST_COMPILE_FAILURE : preproc_eval_cat_fail ] ; -alias parameter_0011_stress_tests - : - parameter_preprocessor_eval_cat_8 - parameter_preprocessor_eval_cat_fail - ; - -alias parameter_0101_stress_tests - : - parameter_evaluate_category_10 - parameter_preprocessor_eval_cat_fail - ; - -alias parameter_0110_stress_tests - : - parameter_evaluate_category_10 - parameter_preprocessor_eval_cat_8 - ; - -alias parameter_0111_stress_tests - : - parameter_0110_stress_tests - parameter_preprocessor_eval_cat_fail - ; - -alias parameter_1001_stress_tests - : - parameter_macros_eval_category - parameter_preprocessor_eval_cat_fail - ; - -alias parameter_1010_stress_tests - : - parameter_macros_eval_category - parameter_preprocessor_eval_cat_8 - ; - -alias parameter_1011_stress_tests - : - parameter_1010_stress_tests - parameter_preprocessor_eval_cat_fail - ; - -alias parameter_1100_stress_tests - : - parameter_macros_eval_category - parameter_evaluate_category_10 - ; - -alias parameter_1101_stress_tests - : - parameter_1100_stress_tests - parameter_preprocessor_eval_cat_fail - ; - -alias parameter_1110_stress_tests - : - parameter_1100_stress_tests - parameter_preprocessor_eval_cat_8 - ; - alias parameter_all_stress_tests : - parameter_1110_stress_tests + parameter_macros_eval_category + parameter_evaluate_category_10 + parameter_preprocessor_eval_cat_8 + parameter_preprocessor_eval_cat_fail + ; + +alias parameter_all_stress_tests_except_preproc_eval_cat_8 + : + parameter_macros_eval_category_cxx03 + parameter_evaluate_category_10_cxx03 + parameter_preprocessor_eval_cat_fail + ; + +alias parameter_all_stress_tests_cxx03 + : + parameter_macros_eval_category_cxx03 + parameter_evaluate_category_10_cxx03 + parameter_preprocessor_eval_cat_8 parameter_preprocessor_eval_cat_fail ; @@ -316,24 +512,12 @@ alias parameter_sl_tests parameter_literate_tests ; -alias parameter_sp_tests - : - parameter_standard_tests - parameter_python_test - ; - alias parameter_slp_tests : parameter_sl_tests parameter_python_test ; -alias parameter_all_but_preproc_eval_cat_fail_tests - : - parameter_1110_stress_tests - parameter_slp_tests - ; - alias parameter_all_but_python_tests : parameter_all_stress_tests @@ -346,16 +530,32 @@ alias parameter_all_tests parameter_slp_tests ; +alias parameter_all_tests_except_preproc_eval_cat_8 + : + parameter_all_stress_tests_except_preproc_eval_cat_8 + parameter_slp_tests + ; + +alias parameter_all_tests_cxx03 + : + parameter_all_stress_tests_cxx03 + parameter_slp_tests + ; + alias parameter_msvc_fail_tests : [ compile-fail evaluate_category.cpp : + BOOST_PARAMETER_MAX_ARITY=4 + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY=5 LIBS_PARAMETER_TEST_COMPILE_FAILURE_MSVC : evaluate_category_msvc_fail ] [ compile-fail preprocessor_eval_category.cpp : + BOOST_PARAMETER_MAX_ARITY=8 + BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY=9 LIBS_PARAMETER_TEST_COMPILE_FAILURE_MSVC : preproc_eval_cat_msvc_fail @@ -374,3 +574,19 @@ alias parameter_msvc_tests parameter_msvc_fail_tests ; +alias parameter_msvc11_fail_tests + : + [ compile-fail compose.cpp + : + LIBS_PARAMETER_TEST_COMPILE_FAILURE_MSVC + : + compose_msvc11_fail + ] + ; + +alias parameter_msvc11_tests + : + parameter_all_tests + parameter_msvc11_fail_tests + ; + diff --git a/test/basics.cpp b/test/basics.cpp old mode 100644 new mode 100755 index ea8c878..5f69803 --- a/test/basics.cpp +++ b/test/basics.cpp @@ -40,11 +40,31 @@ namespace test { return 1; } +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) template int f(Args const&... args) { return test::f_impl(test::f_parameters()(args...)); } +#else + template + int f(A0 const& a0, A1 const& a1, A2 const& a2, A3 const& a3) + { + return test::f_impl(test::f_parameters()(a0, a1, a2, a3)); + } + + template + int f(A0 const& a0, A1 const& a1, A2 const& a2) + { + return test::f_impl(test::f_parameters()(a0, a1, a2)); + } + + template + int f(A0 const& a0, A1 const& a1) + { + return test::f_impl(test::f_parameters()(a0, a1)); + } +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING template int f_list(Params const& params) @@ -53,7 +73,7 @@ namespace test { } } -#include +#include #include #include diff --git a/test/basics.hpp b/test/basics.hpp old mode 100644 new mode 100755 index 87c4675..1e137d1 --- a/test/basics.hpp +++ b/test/basics.hpp @@ -8,6 +8,12 @@ #define BASICS_050424_HPP #include + +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) && \ + (BOOST_PARAMETER_MAX_ARITY < 4) +#error Define BOOST_PARAMETER_MAX_ARITY as 4 or greater. +#endif + #include #include #include diff --git a/test/compose.cpp b/test/compose.cpp old mode 100644 new mode 100755 index 1a23cce..fbb7814 --- a/test/compose.cpp +++ b/test/compose.cpp @@ -14,7 +14,11 @@ namespace param { BOOST_PARAMETER_NAME(a3) BOOST_PARAMETER_NAME(in(lrc)) BOOST_PARAMETER_NAME(out(lr)) +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) BOOST_PARAMETER_NAME(consume(rr)) +#else + BOOST_PARAMETER_NAME(rr) +#endif } #include @@ -32,7 +36,7 @@ namespace test { { int i; int j; - + template A(ArgPack const& args) : i(args[param::_a0]), j(args[param::_a1]) { @@ -129,15 +133,46 @@ namespace test { int main() { +#if !defined(LIBS_PARAMETER_TEST_COMPILE_FAILURE_MSVC) && \ + BOOST_WORKAROUND(BOOST_MSVC, >= 1700) && \ + BOOST_WORKAROUND(BOOST_MSVC, < 1800) + // MSVC 11.0 on AppVeyor fails without this workaround. + test::A a(( + param::_a0 = 1 + , param::_a1 = 13 + , param::_a2 = std::function(test::D) + )); +#else test::A a((param::_a0 = 1, param::_a1 = 13, param::_a2 = test::D)); +#endif BOOST_TEST_EQ(1, a.i); BOOST_TEST_EQ(13, a.j); +#if !defined(LIBS_PARAMETER_TEST_COMPILE_FAILURE_MSVC) && \ + BOOST_WORKAROUND(BOOST_MSVC, >= 1700) && \ + BOOST_WORKAROUND(BOOST_MSVC, < 1800) + // MSVC 11.0 on AppVeyor fails without this workaround. + test::B b0(( + param::_a1 = 13 + , param::_a2 = std::function(test::F) + )); +#else test::B b0((param::_a1 = 13, param::_a2 = test::F)); +#endif BOOST_TEST_EQ(1, b0.i); BOOST_TEST_EQ(13, b0.j); BOOST_TEST_EQ(4.0f, b0.k()); BOOST_TEST_EQ(2.5, b0.l()); +#if !defined(LIBS_PARAMETER_TEST_COMPILE_FAILURE_MSVC) && \ + BOOST_WORKAROUND(BOOST_MSVC, >= 1700) && \ + BOOST_WORKAROUND(BOOST_MSVC, < 1800) + // MSVC 11.0 on AppVeyor fails without this workaround. + test::B b1(( + param::_a3 = std::function(test::D) + , param::_a1 = 13 + )); +#else test::B b1((param::_a3 = test::D, param::_a1 = 13)); +#endif BOOST_TEST_EQ(1, b1.i); BOOST_TEST_EQ(13, b1.j); BOOST_TEST_EQ(4.625f, b1.k()); diff --git a/test/deduced.hpp b/test/deduced.hpp old mode 100644 new mode 100755 index d283b58..d81d0bf --- a/test/deduced.hpp +++ b/test/deduced.hpp @@ -69,11 +69,31 @@ namespace test { boost::mpl::for_each(test::assert_expected(e, args)); } +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) template void check(E const& e, Args const&... args) { test::check0(e, P()(args...)); } +#else + template + void check(E const& e, A0 const& a0) + { + test::check0(e, P()(a0)); + } + + template + void check(E const& e, A0 const& a0, A1 const& a1) + { + test::check0(e, P()(a0, a1)); + } + + template + void check(E const& e, A0 const& a0, A1 const& a1, A2 const& a2) + { + test::check0(e, P()(a0, a1, a2)); + } +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING } // namespace test #endif // include guard diff --git a/test/earwicker.cpp b/test/earwicker.cpp old mode 100644 new mode 100755 index 72e89da..673b798 --- a/test/earwicker.cpp +++ b/test/earwicker.cpp @@ -3,6 +3,13 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) +#include + +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) && \ + (BOOST_PARAMETER_MAX_ARITY < 4) +#error Define BOOST_PARAMETER_MAX_ARITY as 4 or greater. +#endif + #include namespace test { diff --git a/test/evaluate_category.cpp b/test/evaluate_category.cpp index ff5e7ae..da27404 100755 --- a/test/evaluate_category.cpp +++ b/test/evaluate_category.cpp @@ -3,6 +3,18 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) +#include + +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +#if (BOOST_PARAMETER_MAX_ARITY < 4) +#error Define BOOST_PARAMETER_MAX_ARITY as 4 or greater. +#endif +#if (BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY < 5) +#error Define BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY \ +as 5 or greater. +#endif +#endif + #include namespace test { @@ -10,7 +22,11 @@ namespace test { BOOST_PARAMETER_NAME((_lrc0, keywords) in(lrc0)) BOOST_PARAMETER_NAME((_lr0, keywords) in_out(lr0)) BOOST_PARAMETER_NAME((_rrc0, keywords) in(rrc0)) +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) BOOST_PARAMETER_NAME((_rr0, keywords) consume(rr0)) +#else + BOOST_PARAMETER_NAME((_rr0, keywords) rr0) +#endif struct f_parameters : boost::parameter::parameters< @@ -43,6 +59,7 @@ namespace test { test::passed_by_lvalue_reference , A::evaluate_category(args[test::_lr0]) ); +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) if (boost::is_scalar::value) { @@ -66,6 +83,16 @@ namespace test { , A::evaluate_category(args[test::_rr0]) ); } +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , A::evaluate_category(args[test::_rrc0]) + ); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , A::evaluate_category(args[test::_rr0]) + ); +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING } }; } // namespace test @@ -133,6 +160,8 @@ namespace test { >::type >::evaluate_category(args[test::_lr0]) )); + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) BOOST_TEST(( test::passed_by_rvalue_reference == test::A< typename boost::remove_const< @@ -143,6 +172,18 @@ namespace test { >::type >::evaluate_category(args[test::_rr0]) )); +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + BOOST_TEST(( + test::passed_by_lvalue_reference_to_const == test::A< + typename boost::remove_const< + typename boost::parameter::value_type< + Args + , test::keywords::rr0 + >::type + >::type + >::evaluate_category(args[test::_rr0]) + )); +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING } }; } // namespace test @@ -203,14 +244,24 @@ int main() test::f_parameters()( "crg" , baz_arr +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) , static_cast("uir") , static_cast(baz_arr) +#else + , "grl" + , "grp" +#endif ) ); test::B::evaluate(( test::_lr0 = baz_arr +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) , test::_rrc0 = static_cast("wld") , test::_rr0 = static_cast(baz_arr) +#else + , test::_rrc0 = "frd" + , test::_rr0 = "plg" +#endif , test::_lrc0 = "mos" )); #endif // MSVC diff --git a/test/evaluate_category.hpp b/test/evaluate_category.hpp index 17face2..236ff93 100755 --- a/test/evaluate_category.hpp +++ b/test/evaluate_category.hpp @@ -161,6 +161,11 @@ namespace test { return test::rvalue_const_bitset(); } }; +} // namespace test + +#include + +namespace test { template struct A @@ -175,6 +180,7 @@ namespace test { return test::passed_by_lvalue_reference; } +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) static test::invoked evaluate_category(T const&&) { return test::passed_by_rvalue_reference_to_const; @@ -184,6 +190,7 @@ namespace test { { return test::passed_by_rvalue_reference; } +#endif }; struct U @@ -200,6 +207,7 @@ namespace test { return test::passed_by_lvalue_reference; } +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) template static test::invoked evaluate_category(std::bitset const&&) { @@ -211,11 +219,11 @@ namespace test { { return test::passed_by_rvalue_reference; } +#endif }; } // namespace test #include -#include #include #include #include diff --git a/test/evaluate_category_10.cpp b/test/evaluate_category_10.cpp index 915894d..65fc250 100755 --- a/test/evaluate_category_10.cpp +++ b/test/evaluate_category_10.cpp @@ -3,6 +3,13 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) +#include + +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) && \ + (BOOST_PARAMETER_MAX_ARITY < 10) +#error Define BOOST_PARAMETER_MAX_ARITY as 10 or greater. +#endif + #include namespace test { @@ -10,7 +17,11 @@ namespace test { BOOST_PARAMETER_NAME((_lrc0, keywords) in(lrc0)) BOOST_PARAMETER_NAME((_lr0, keywords) in_out(lr0)) BOOST_PARAMETER_NAME((_rrc0, keywords) in(rrc0)) +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) BOOST_PARAMETER_NAME((_rr0, keywords) consume(rr0)) +#else + BOOST_PARAMETER_NAME((_rr0, keywords) rr0) +#endif BOOST_PARAMETER_NAME((_lrc1, keywords) in(lrc1)) BOOST_PARAMETER_NAME((_lr1, keywords) out(lr1)) BOOST_PARAMETER_NAME((_rrc1, keywords) in(rrc1)) @@ -73,6 +84,7 @@ namespace test { args[test::_lr2 || test::lvalue_bitset_function<2>()] ) ); +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) BOOST_TEST_EQ( test::passed_by_rvalue_reference_to_const , U::evaluate_category<0>(args[test::_rrc0]) @@ -91,12 +103,39 @@ namespace test { args[test::_rr2 || test::rvalue_bitset_function<2>()] ) ); +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<0>(args[test::_rrc0]) + ); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<0>(args[test::_rr0]) + ); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<1>(args[test::_rrc1]) + ); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<2>( + args[test::_rr2 || test::rvalue_bitset_function<2>()] + ) + ); +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING } }; } // namespace test +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +#include +#include +#endif + int main() { +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) || \ + (10 < BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY) test::C::evaluate( test::g_parameters()( test::lvalue_const_bitset<0>() @@ -122,6 +161,33 @@ int main() , test::rvalue_bitset<2>() ) ); +#else // no perfect forwarding support and no exponential overloads + test::C::evaluate( + test::g_parameters()( + test::lvalue_const_bitset<0>() + , boost::ref(test::lvalue_bitset<0>()) + , test::rvalue_const_bitset<0>() + , boost::parameter::as_lvalue(test::rvalue_bitset<0>()) + , test::lvalue_const_bitset<1>() + , boost::ref(test::lvalue_bitset<1>()) + , test::rvalue_const_bitset<1>() + ) + ); + test::C::evaluate( + test::g_parameters()( + test::lvalue_const_bitset<0>() + , boost::ref(test::lvalue_bitset<0>()) + , test::rvalue_const_bitset<0>() + , boost::parameter::as_lvalue(test::rvalue_bitset<0>()) + , test::lvalue_const_bitset<1>() + , boost::ref(test::lvalue_bitset<1>()) + , test::rvalue_const_bitset<1>() + , test::lvalue_const_bitset<2>() + , boost::ref(test::lvalue_bitset<2>()) + , boost::parameter::as_lvalue(test::rvalue_bitset<2>()) + ) + ); +#endif // perfect forwarding support, or exponential overloads return boost::report_errors(); } diff --git a/test/evaluate_category_16.cpp b/test/evaluate_category_16.cpp index be78a65..75b4f8f 100755 --- a/test/evaluate_category_16.cpp +++ b/test/evaluate_category_16.cpp @@ -3,6 +3,13 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) +#include + +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) && \ + (BOOST_PARAMETER_MAX_ARITY < 16) +#error Define BOOST_PARAMETER_MAX_ARITY as 16 or greater. +#endif + #include namespace test { @@ -101,6 +108,7 @@ namespace test { ] ) ); +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) BOOST_TEST_EQ( test::passed_by_rvalue_reference_to_const , U::evaluate_category<0>(args[test::_rrc0]) @@ -145,6 +153,52 @@ namespace test { ] ) ); +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<0>(args[test::_rrc0]) + ); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<1>(args[test::_rrc1]) + ); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<2>(args[test::_rrc2]) + ); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<3>(args[test::_rrc3]) + ); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<4>( + args[test::_rrc4 | test::rvalue_const_bitset<4>()] + ) + ); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<5>( + args[ + test::_rrc5 || test::rvalue_const_bitset_function<5>() + ] + ) + ); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<6>( + args[test::_rrc6 | test::rvalue_const_bitset<6>()] + ) + ); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<7>( + args[ + test::_rrc7 || test::rvalue_const_bitset_function<7>() + ] + ) + ); +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING } }; } // namespace test diff --git a/test/literate/extracting-parameter-types0.cpp b/test/literate/extracting-parameter-types0.cpp old mode 100644 new mode 100755 index 6088843..22e4582 --- a/test/literate/extracting-parameter-types0.cpp +++ b/test/literate/extracting-parameter-types0.cpp @@ -5,17 +5,36 @@ BOOST_PARAMETER_NAME(name) BOOST_PARAMETER_NAME(index) template +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) void noop(T&&) +#else +void noop(T&) +#endif { } +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +#include +#endif + template +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) int deduce_arg_types_impl(Name&& name, Index&& index) { noop(std::forward(name)); noop(std::forward(index)); return index; } +#else +int deduce_arg_types_impl(Name& name, Index& index) +{ + Name& n2 = name; // we know the types + Index& i2 = index; + noop(n2); + noop(i2); + return index; +} +#endif template int deduce_arg_types(ArgumentPack const& args) diff --git a/test/macros_eval_category.cpp b/test/macros_eval_category.cpp index cc4f83c..36bc099 100755 --- a/test/macros_eval_category.cpp +++ b/test/macros_eval_category.cpp @@ -3,6 +3,13 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) +#include + +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) && \ + (BOOST_PARAMETER_MAX_ARITY < 10) +#error Define BOOST_PARAMETER_MAX_ARITY as 10 or greater. +#endif + #include namespace test { @@ -10,7 +17,11 @@ namespace test { BOOST_PARAMETER_NAME(in(lrc0)) BOOST_PARAMETER_NAME(out(lr0)) BOOST_PARAMETER_NAME(in(rrc0)) +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) BOOST_PARAMETER_NAME(consume(rr0)) +#else + BOOST_PARAMETER_NAME(rr0) +#endif BOOST_PARAMETER_NAME(in(lrc1)) BOOST_PARAMETER_NAME(out(lr1)) BOOST_PARAMETER_NAME(in(rrc1)) @@ -73,6 +84,7 @@ namespace test { p[test::_lr2 || test::lvalue_bitset_function<2>()] ) ); +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) BOOST_TEST_EQ( test::passed_by_rvalue_reference_to_const , U::evaluate_category<0>(p[test::_rrc0]) @@ -91,14 +103,40 @@ namespace test { p[test::_rr2 || test::rvalue_bitset_function<2>()] ) ); +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<0>(p[test::_rrc0]) + ); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<0>(p[test::_rr0]) + ); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<1>(p[test::_rrc1]) + ); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , U::evaluate_category<2>( + p[test::_rr2 || test::rvalue_bitset_function<2>()] + ) + ); +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING return 0; } }; } // namespace test +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +#include +#endif + int main() { +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) || \ + (10 < BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY) test::C::evaluate( test::lvalue_const_bitset<0>() , test::lvalue_bitset<0>() @@ -120,6 +158,29 @@ int main() , test::lvalue_bitset<2>() , test::rvalue_bitset<2>() ); +#else // no perfect forwarding support and no exponential overloads + test::C::evaluate( + test::lvalue_const_bitset<0>() + , boost::ref(test::lvalue_bitset<0>()) + , test::rvalue_const_bitset<0>() + , test::rvalue_bitset<0>() + , test::lvalue_const_bitset<1>() + , boost::ref(test::lvalue_bitset<1>()) + , test::rvalue_const_bitset<1>() + ); + test::C::evaluate( + test::lvalue_const_bitset<0>() + , boost::ref(test::lvalue_bitset<0>()) + , test::rvalue_const_bitset<0>() + , test::rvalue_bitset<0>() + , test::lvalue_const_bitset<1>() + , boost::ref(test::lvalue_bitset<1>()) + , test::rvalue_const_bitset<1>() + , test::lvalue_const_bitset<2>() + , boost::ref(test::lvalue_bitset<2>()) + , test::rvalue_bitset<2>() + ); +#endif // perfect forwarding support, or exponential overloads return boost::report_errors(); } diff --git a/test/normalized_argument_types.cpp b/test/normalized_argument_types.cpp old mode 100644 new mode 100755 index 0893e83..f429aff --- a/test/normalized_argument_types.cpp +++ b/test/normalized_argument_types.cpp @@ -3,6 +3,13 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) +#include + +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) && \ + (BOOST_PARAMETER_MAX_ARITY < 2) +#error Define BOOST_PARAMETER_MAX_ARITY as 2 or greater. +#endif + #include namespace test { diff --git a/test/ntp.cpp b/test/ntp.cpp old mode 100644 new mode 100755 index 641bad5..f546554 --- a/test/ntp.cpp +++ b/test/ntp.cpp @@ -5,6 +5,11 @@ #include +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) && \ + (BOOST_PARAMETER_MAX_ARITY < 4) +#error Define BOOST_PARAMETER_MAX_ARITY as 4 or greater. +#endif + namespace test { struct X diff --git a/test/optional_deduced_sfinae.cpp b/test/optional_deduced_sfinae.cpp old mode 100644 new mode 100755 index d6ba433..fc7437f --- a/test/optional_deduced_sfinae.cpp +++ b/test/optional_deduced_sfinae.cpp @@ -3,7 +3,6 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) -#include #include #include #include diff --git a/test/preprocessor.cpp b/test/preprocessor.cpp old mode 100644 new mode 100755 index 5550b78..c71853b --- a/test/preprocessor.cpp +++ b/test/preprocessor.cpp @@ -155,10 +155,13 @@ namespace test { } } // namespace test +#include + +#if !defined(BOOST_NO_SFINAE) #include #include #include -#include +#endif namespace test { @@ -170,6 +173,7 @@ namespace test { template explicit base_0( Args const& args +#if !defined(BOOST_NO_SFINAE) , typename boost::disable_if< typename boost::mpl::if_< boost::is_base_of @@ -177,6 +181,7 @@ namespace test { , boost::mpl::false_ >::type >::type* = BOOST_TTI_DETAIL_NULLPTR +#endif // BOOST_NO_SFINAE ) : f(args[test::_value | 1.f]), i(args[test::_index | 2]) { } @@ -197,6 +202,7 @@ namespace test { template explicit base_1( Args const& args +#if !defined(BOOST_NO_SFINAE) , typename boost::disable_if< typename boost::mpl::if_< boost::is_base_of @@ -204,6 +210,7 @@ namespace test { , boost::mpl::false_ >::type >::type* = BOOST_TTI_DETAIL_NULLPTR +#endif // BOOST_NO_SFINAE ) { args[test::_tester]( @@ -352,10 +359,12 @@ namespace test { return 1; } +#if !defined(BOOST_NO_SFINAE) // On compilers that actually support SFINAE, add another overload // that is an equally good match and can only be in the overload set // when the others are not. This tests that the SFINAE is actually - // working. + // working. On all other compilers we're just checking that everything + // about SFINAE-enabled code will work, except of course the SFINAE. template typename boost::enable_if< typename boost::mpl::if_< @@ -369,6 +378,7 @@ namespace test { { return 0; } +#endif // BOOST_NO_SFINAE struct predicate { @@ -392,10 +402,12 @@ namespace test { return 1; } +#if !defined(BOOST_NO_SFINAE) // On compilers that actually support SFINAE, add another overload // that is an equally good match and can only be in the overload set // when the others are not. This tests that the SFINAE is actually - // working. + // working. On all other compilers we're just checking that everything + // about SFINAE-enabled code will work, except of course the SFINAE. template typename boost::enable_if< typename boost::mpl::if_< @@ -409,6 +421,7 @@ namespace test { { return 0; } +#endif // BOOST_NO_SFINAE template T const& as_lvalue(T const& x) @@ -550,7 +563,8 @@ int main() , test::_name = std::string("foo") ); -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) +#if !defined(BOOST_NO_SFINAE) && \ + !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) BOOST_TEST(test::sfinae("foo") == 1); BOOST_TEST(test::sfinae(1) == 0); diff --git a/test/preprocessor_deduced.cpp b/test/preprocessor_deduced.cpp old mode 100644 new mode 100755 index a771446..c912c46 --- a/test/preprocessor_deduced.cpp +++ b/test/preprocessor_deduced.cpp @@ -9,11 +9,14 @@ #include #include #include -#include #include #include #include "basics.hpp" +#if !defined(BOOST_NO_SFINAE) +#include +#endif + namespace test { BOOST_PARAMETER_NAME(expected) @@ -184,10 +187,12 @@ namespace test { return 1; } +#if !defined(BOOST_NO_SFINAE) // On compilers that actually support SFINAE, add another overload // that is an equally good match and can only be in the overload set // when the others are not. This tests that the SFINAE is actually - // working. + // working. On all other compilers we're just checking that everything + // about SFINAE-enabled code will work, except of course the SFINAE. template typename boost::enable_if< typename boost::mpl::if_< @@ -201,6 +206,7 @@ namespace test { { return 0; } +#endif // BOOST_NO_SFINAE } // namespace test #include @@ -279,8 +285,11 @@ int main() , 0 , test::_y = std::string("foo") ); + +#if !defined(BOOST_NO_SFINAE) BOOST_TEST(test::sfinae("foo") == 1); BOOST_TEST(test::sfinae(0) == 0); +#endif return boost::report_errors(); } diff --git a/test/preprocessor_eval_cat_8.cpp b/test/preprocessor_eval_cat_8.cpp index 6f6334b..50f4a24 100755 --- a/test/preprocessor_eval_cat_8.cpp +++ b/test/preprocessor_eval_cat_8.cpp @@ -3,6 +3,13 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) +#include + +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) && \ + (BOOST_PARAMETER_MAX_ARITY < 8) +#error Define BOOST_PARAMETER_MAX_ARITY as 8 or greater. +#endif + #include namespace test { @@ -10,7 +17,11 @@ namespace test { BOOST_PARAMETER_NAME((_lrc0, kw) in(lrc0)) BOOST_PARAMETER_NAME((_lr0, kw) in_out(lr0)) BOOST_PARAMETER_NAME((_rrc0, kw) in(rrc0)) +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) BOOST_PARAMETER_NAME((_rr0, kw) consume(rr0)) +#else + BOOST_PARAMETER_NAME((_rr0, kw) rr0) +#endif BOOST_PARAMETER_NAME((_lrc1, kw) in(lrc1)) BOOST_PARAMETER_NAME((_lr1, kw) out(lr1)) BOOST_PARAMETER_NAME((_rrc1, kw) in(rrc1)) @@ -22,9 +33,12 @@ namespace test { #include #include #include -#include #include "evaluate_category.hpp" +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +#include +#endif + namespace test { struct C @@ -103,6 +117,7 @@ namespace test { passed_by_lvalue_reference , U::evaluate_category<5>(lr1) ); +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) BOOST_TEST_EQ( passed_by_rvalue_reference_to_const , U::evaluate_category<2>(std::forward(rrc0)) @@ -119,6 +134,24 @@ namespace test { passed_by_rvalue_reference , U::evaluate_category<7>(std::forward(rr1)) ); +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + BOOST_TEST_EQ( + passed_by_lvalue_reference_to_const + , U::evaluate_category<2>(rrc0) + ); + BOOST_TEST_EQ( + passed_by_lvalue_reference_to_const + , U::evaluate_category<3>(rr0) + ); + BOOST_TEST_EQ( + passed_by_lvalue_reference_to_const + , U::evaluate_category<6>(rrc1) + ); + BOOST_TEST_EQ( + passed_by_lvalue_reference_to_const + , U::evaluate_category<7>(rr1) + ); +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING return true; } diff --git a/test/preprocessor_eval_category.cpp b/test/preprocessor_eval_category.cpp index 66d6a81..56a033f 100755 --- a/test/preprocessor_eval_category.cpp +++ b/test/preprocessor_eval_category.cpp @@ -3,6 +3,18 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) +#include + +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +#if (BOOST_PARAMETER_MAX_ARITY < 4) +#error Define BOOST_PARAMETER_MAX_ARITY as 4 or greater. +#endif +#if (BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY < 5) +#error Define BOOST_PARAMETER_EXPONENTIAL_OVERLOAD_THRESHOLD_ARITY \ +as 5 or greater. +#endif +#endif + #include namespace test { @@ -10,16 +22,23 @@ namespace test { BOOST_PARAMETER_NAME((_lrc0, kw) in(lrc0)) BOOST_PARAMETER_NAME((_lr0, kw) in_out(lr0)) BOOST_PARAMETER_NAME((_rrc0, kw) in(rrc0)) +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) BOOST_PARAMETER_NAME((_rr0, kw) consume(rr0)) +#else + BOOST_PARAMETER_NAME((_rr0, kw) rr0) +#endif } // namespace test #include #include #include #include -#include #include "evaluate_category.hpp" +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) +#include +#endif + namespace test { BOOST_PARAMETER_FUNCTION((bool), evaluate, kw, @@ -68,6 +87,7 @@ namespace test { >::evaluate_category(lr0) ); +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) if ( boost::is_scalar< typename boost::remove_const< @@ -152,6 +172,44 @@ namespace test { >::evaluate_category(std::forward(rr0)) ); } +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + BOOST_TEST(( + test::passed_by_lvalue_reference_to_const == test::A< + typename boost::remove_const< + typename boost::parameter::value_type< + Args + , test::kw::rrc0 + >::type + >::type + >::evaluate_category(args[test::_rrc0]) + )); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , test::A< + typename boost::remove_const< + typename boost::remove_reference::type + >::type + >::evaluate_category(rrc0) + ); + BOOST_TEST(( + test::passed_by_lvalue_reference_to_const == test::A< + typename boost::remove_const< + typename boost::parameter::value_type< + Args + , test::kw::rr0 + >::type + >::type + >::evaluate_category(args[test::_rr0]) + )); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , test::A< + typename boost::remove_const< + typename boost::remove_reference::type + >::type + >::evaluate_category(rr0) + ); +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING return true; } @@ -159,9 +217,12 @@ namespace test { #include #include + +#if !defined(BOOST_NO_SFINAE) #include #include #include +#endif namespace test { @@ -179,6 +240,7 @@ namespace test { template explicit B( Args const& args +#if !defined(BOOST_NO_SFINAE) , typename boost::disable_if< typename boost::mpl::if_< boost::is_base_of @@ -186,6 +248,7 @@ namespace test { , boost::mpl::false_ >::type >::type* = BOOST_TTI_DETAIL_NULLPTR +#endif // BOOST_NO_SFINAE ) { test::evaluate( @@ -283,6 +346,8 @@ namespace test { >::type >::evaluate_category(rrc0) ); + +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) BOOST_TEST(( test::passed_by_rvalue_reference == test::A< typename boost::remove_const< @@ -301,6 +366,26 @@ namespace test { >::type >::evaluate_category(std::forward(rr0)) ); +#else // !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) + BOOST_TEST(( + test::passed_by_lvalue_reference_to_const == test::A< + typename boost::remove_const< + typename boost::parameter::value_type< + Args + , test::kw::rr0 + >::type + >::type + >::evaluate_category(args[test::_rr0]) + )); + BOOST_TEST_EQ( + test::passed_by_lvalue_reference_to_const + , test::A< + typename boost::remove_const< + typename boost::remove_reference::type + >::type + >::evaluate_category(rr0) + ); +#endif // BOOST_PARAMETER_HAS_PERFECT_FORWARDING return true; } @@ -412,13 +497,23 @@ int main() test::evaluate( "q2x" , baz_arr +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) , static_cast("mos") , static_cast(baz_arr) +#else + , "crg" + , "uir" +#endif ); test::evaluate( test::_lr0 = baz_arr +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) , test::_rrc0 = static_cast("def") , test::_rr0 = static_cast(baz_arr) +#else + , test::_rrc0 = "grl" + , test::_rr0 = "grp" +#endif , test::_lrc0 = "wld" ); #endif // MSVC @@ -437,13 +532,23 @@ int main() test::C cp0( "frd" , baz_arr +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) , static_cast("dfs") , static_cast(baz_arr) +#else + , "plg" + , "thd" +#endif ); test::C cp1( test::_lr0 = baz_arr +#if defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) , test::_rrc0 = static_cast("dgx") , test::_rr0 = static_cast(baz_arr) +#else + , test::_rrc0 = "hnk" + , test::_rr0 = "xzz" +#endif , test::_lrc0 = "zts" ); #endif // MSVC diff --git a/test/sfinae.cpp b/test/sfinae.cpp old mode 100644 new mode 100755 index c6193b0..0fa294b --- a/test/sfinae.cpp +++ b/test/sfinae.cpp @@ -3,6 +3,13 @@ // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) +#include + +#if !defined(BOOST_PARAMETER_HAS_PERFECT_FORWARDING) && \ + (BOOST_PARAMETER_MAX_ARITY < 2) +#error Define BOOST_PARAMETER_MAX_ARITY as 2 or greater. +#endif + #include namespace test { @@ -102,7 +109,8 @@ namespace test { } } // namespace test -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) +#if !defined(BOOST_NO_SFINAE) && \ + !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) #include #include @@ -111,7 +119,9 @@ namespace test { // On compilers that actually support SFINAE, add another overload that is // an equally good match and can only be in the overload set when the - // others are not. This tests that the SFINAE is actually working. + // others are not. This tests that the SFINAE is actually working. On + // all other compilers we're just checking that everything about + // SFINAE-enabled code will work, except of course the SFINAE. template typename boost::enable_if< typename boost::mpl::if_< @@ -127,14 +137,15 @@ namespace test { } } // namespace test -#endif // no Borland workarounds needed. +#endif // SFINAE enabled, no Borland workarounds needed. int main() { test::f("foo"); test::f("foo", 3.f); test::f(test::value = 3.f, test::name = "foo"); -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) +#if !defined(BOOST_NO_SFINAE) && \ + !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592)) BOOST_TEST_EQ(0, test::f(3, 4)); #endif return boost::report_errors();