From 2bd90f79734002a82350831fd15e4e8e36fadec5 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Wed, 27 May 2026 19:14:03 +0800 Subject: [PATCH 1/5] migrate GHA to boost-ci --- .github/workflows/ci.yml | 624 +-------------------------------------- 1 file changed, 7 insertions(+), 617 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1c53c69..1f05c76 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,621 +10,11 @@ on: - fix/** - pr/** -jobs: - runner-selection: - runs-on: ubuntu-latest - # runs-on: ${{ github.repository_owner == 'boostorg' && fromJSON('[ "self-hosted", "linux", "x64", "ubuntu-latest-aws" ]') || 'ubuntu-latest' }} - outputs: - labelmatrix: ${{ steps.aws_hosted_runners.outputs.labelmatrix }} - steps: - - name: AWS Hosted Runners - id: aws_hosted_runners - uses: cppalliance/aws-hosted-runners@v1.0.0 - - posix: - if: true - defaults: - run: - shell: bash - - strategy: - fail-fast: false - matrix: - include: - - toolset: gcc-10 - cxxstd: "14,17,2a" - os: ubuntu-22.04 - install: g++-10 - supported: true - - toolset: gcc-11 - cxxstd: "14,17,20" - os: ubuntu-22.04 - install: g++-11 - supported: true - - toolset: gcc-12 - cxxstd: "14,17,20" - os: ubuntu-22.04 - install: g++-12 - supported: true - - toolset: gcc-13 - cxxstd: "14,17,20" - os: ubuntu-22.04 - install: g++-13 - supported: true - - toolset: gcc-14 - cxxstd: "14,17,20" - os: ubuntu-24.04 - install: g++-14 - supported: true - - toolset: clang - install: clang-13 - compiler: clang++-13 - cxxstd: "14,17,20" - os: ubuntu-22.04 - supported: true - - toolset: clang - install: clang-14 - compiler: clang++-14 - cxxstd: "14,17,20" - os: ubuntu-22.04 - supported: true - - toolset: clang - install: clang-15 - compiler: clang++-15 - cxxstd: "14,17,20" - os: ubuntu-22.04 - supported: true - - toolset: clang - install: clang-16 - compiler: clang++-16 - cxxstd: "14,17,20" - os: ubuntu-24.04 - supported: true - - toolset: clang - compiler: clang++-17 - cxxstd: "14,17,20,2b" - os: ubuntu-24.04 - install: clang-17 - supported: true - - toolset: clang - compiler: clang++-18 - cxxstd: "14,17,20,2b" - os: ubuntu-24.04 - install: clang-18 - supported: true - - - # macos - - description: macos-14 - toolset: clang - cxxstd: "14,17,20" - os: macos-14 - supported: true - - description: macos-15 - toolset: clang - cxxstd: "14,17,20" - os: macos-15 - supported: true - - description: macos-26 - toolset: clang - cxxstd: "17,20,23" - os: macos-26 - supported: true - - needs: [runner-selection] - # runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)[matrix.os] }} - runs-on: ${{matrix.os}} - container: ${{ matrix.container }} - env: {B2_USE_CCACHE: 1} - - steps: - - name: Check if running in container - if: matrix.container != '' - run: echo "GHA_CONTAINER=${{ matrix.container }}" >> $GITHUB_ENV - - name: If running in container, upgrade packages - if: matrix.container != '' - run: | - apt-get -o Acquire::Retries=3 update && DEBIAN_FRONTEND=noninteractive apt-get -y install tzdata && apt-get -o Acquire::Retries=3 install -y sudo software-properties-common wget curl apt-transport-https make apt-file sudo unzip libssl-dev build-essential autotools-dev autoconf automake g++ libc++-helpers python ruby cpio gcc-multilib g++-multilib pkgconf python3 ccache libpython-dev locales - sudo apt-add-repository ppa:git-core/ppa - sudo apt-get -o Acquire::Retries=3 update && apt-get -o Acquire::Retries=3 -y install git - python_version=$(python3 -c 'import sys; print("{0.major}.{0.minor}".format(sys.version_info))') - if [[ ${python_version} =~ ^3\.[0-5]$ ]]; then - true - else - apt-get install -y python3-distutils - fi - sudo wget https://bootstrap.pypa.io/pip/$python_version/get-pip.py - sudo python3 get-pip.py - sudo /usr/local/bin/pip install cmake - - uses: actions/checkout@v6 - - - name: Cache ccache - uses: actions/cache@v5 - if: env.B2_USE_CCACHE - with: - path: ~/.ccache - key: ${{matrix.os}}-${{matrix.container}}-${{matrix.compiler}}-${{github.sha}} - restore-keys: ${{matrix.os}}-${{matrix.container}}-${{matrix.compiler}}- - - - name: Install packages - if: matrix.install - run: | - for i in {1..3}; do sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" && break || sleep 2; done - sudo apt-get update - sudo apt-get install -y ${{matrix.install}} - - - name: Setup Boost - shell: bash - run: | - if [[ $(uname) =~ [Ll]inux ]]; then - echo Installing locales for ${TRAVIS_OS_NAME} ... - sudo /usr/sbin/locale-gen fr_FR - sudo /usr/sbin/locale-gen en_GB - sudo locale -a - echo ...done with locales - fi - echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY - LIBRARY=${GITHUB_REPOSITORY#*/} - echo LIBRARY: $LIBRARY - echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV - echo GITHUB_BASE_REF: $GITHUB_BASE_REF - echo GITHUB_REF: $GITHUB_REF - REF=${GITHUB_BASE_REF:-$GITHUB_REF} - REF=${REFrefs/heads/} - echo REF: $REF - BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true - echo BOOST_BRANCH: $BOOST_BRANCH - cd .. - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root - cd boost-root - cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY - git submodule update --init tools/boostdep - python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY - ./bootstrap.sh - ./b2 -d0 headers - - - name: Run tests - shell: bash - run: | - cd ../boost-root - if [[ "${{matrix.supported}}" != "true" ]] ; then - echo "This configuration is not supported because ${{matrix.supported}}" - exit 0 - fi - toolsets=$(sed 's/,/ /g' <<<"${{matrix.toolset}}") - standards=$(sed 's/,/ /g' <<<"${{matrix.cxxstd}}") - variants="debug release" - err=0 - cd libs/$LIBRARY - for toolset in ${toolsets} ; do - for standard in ${standards} ; do - for variant in ${variants} ; do - if [[ err -ne 0 ]] ; then - echo "skipping: ${toolset} ${standard} ${variant}" - else - echo "running: ${toolset} ${standard} ${variant}" - ../../b2 -j3 test toolset=${toolset} cxxstd=${standard} variant=${variant} - err=$? - fi - done - done - done - [[ $err -ne 0 ]] && false || true - - windows: - if: true - strategy: - fail-fast: false - matrix: - include: - - toolset: msvc-14.3 - cxxstd: "14,17,20,latest" - addrmd: 32,64 - os: windows-2022 - supported: true - - toolset: clang-win - cxxstd: "14,17,20,latest" - addrmd: 32,64 - os: windows-2022 - supported: true - - toolset: gcc - cxxstd: "14,17,2a" - addrmd: 64 - os: windows-2022 - supported: true - - - needs: [runner-selection] - # runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)[matrix.os] }} - runs-on: ${{matrix.os}} - - steps: - - uses: actions/checkout@v6 - - - name: Setup Boost - shell: cmd - run: | - echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY% - for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi - echo LIBRARY: %LIBRARY% - echo LIBRARY=%LIBRARY%>>%GITHUB_ENV% - echo GITHUB_BASE_REF: %GITHUB_BASE_REF% - echo GITHUB_REF: %GITHUB_REF% - if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF% - set BOOST_BRANCH=develop - for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master - echo BOOST_BRANCH: %BOOST_BRANCH% - cd .. - git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root - cd boost-root - xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\ - git submodule update --init tools/boostdep - python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY% - copy libs\%LIBRARY%\tools\user-config.jam %USERPROFILE%\user-config.jam - cmd /c bootstrap - b2 -d0 headers - - - name: Run tests - shell: bash - run: | - echo "current directory: $(pwd)" - cd ../boost-root - if [[ "${{matrix.supported}}" != "true" ]] ; then - echo "This configuration is not supported because ${{matrix.supported}}" - exit 0 - fi - toolsets=$(sed 's/,/ /g' <<<"${{matrix.toolset}}") - standards=$(sed 's/,/ /g' <<<"${{matrix.cxxstd}}") - address_models=$(sed 's/,/ /g' <<<"${{matrix.addrmd}}") - variants="debug release" - cd libs/$LIBRARY - for toolset in ${toolsets} ; do - for standard in ${standards} ; do - for address_model in ${address_models} ; do - for variant in ${variants} ; do - echo "running: ${toolset} ${standard} ${address_model} ${variant}" - ../../b2 -j3 ${{matrix.cxxflags}} test toolset=${toolset} cxxstd=${standard} address-model=${address_model} variant=${variant} || exit $? - done - done - done - done - - - posix-cmake-subdir: - strategy: - fail-fast: false - matrix: - include: - - os: ubuntu-22.04 - - os: ubuntu-24.04 - - os: macos-14 - - os: macos-15 - - os: macos-26 - - runs-on: ${{matrix.os}} - - steps: - - uses: actions/checkout@v6 - - - name: Install packages - if: matrix.install - run: sudo apt-get -y install ${{matrix.install}} - - - name: Setup Boost - run: | - echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY - LIBRARY=${GITHUB_REPOSITORY#*/} - echo LIBRARY: $LIBRARY - echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV - echo GITHUB_BASE_REF: $GITHUB_BASE_REF - echo GITHUB_REF: $GITHUB_REF - REF=${GITHUB_BASE_REF:-$GITHUB_REF} - REF=${REF#refs/heads/} - echo REF: $REF - BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true - echo BOOST_BRANCH: $BOOST_BRANCH - cd .. - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root - cd boost-root - cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY - git submodule update --init tools/boostdep - python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY - - - name: Use library with add_subdirectory - run: | - cd ../boost-root/libs/$LIBRARY/test/cmake_subdir_test - mkdir __build__ && cd __build__ - cmake .. - cmake --build . - ctest --output-on-failure --no-tests=error - - posix-cmake-install: - strategy: - fail-fast: false - matrix: - include: - - os: ubuntu-22.04 - - os: ubuntu-24.04 - - os: macos-14 - - os: macos-15 - - os: macos-26 - - runs-on: ${{matrix.os}} - - steps: - - uses: actions/checkout@v6 - - - name: Install packages - if: matrix.install - run: sudo apt-get -y install ${{matrix.install}} - - - name: Setup Boost - run: | - echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY - LIBRARY=${GITHUB_REPOSITORY#*/} - echo LIBRARY: $LIBRARY - echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV - echo GITHUB_BASE_REF: $GITHUB_BASE_REF - echo GITHUB_REF: $GITHUB_REF - REF=${GITHUB_BASE_REF:-$GITHUB_REF} - REF=${REF#refs/heads/} - echo REF: $REF - BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true - echo BOOST_BRANCH: $BOOST_BRANCH - cd .. - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root - cd boost-root - cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY - git submodule update --init tools/boostdep - python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY - - - name: Configure - run: | - cd ../boost-root - mkdir __build__ && cd __build__ - cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY -DCMAKE_INSTALL_PREFIX=~/.local .. - - - name: Install - run: | - cd ../boost-root/__build__ - cmake --build . --target install - - - name: Use the installed library - run: | - cd ../boost-root/libs/$LIBRARY/test/cmake_install_test && mkdir __build__ && cd __build__ - cmake -DCMAKE_INSTALL_PREFIX=~/.local .. - cmake --build . - ctest --output-on-failure --no-tests=error +permissions: + contents: read - posix-cmake-test: - strategy: - fail-fast: false - matrix: - include: - - os: ubuntu-22.04 - - os: ubuntu-24.04 - - os: macos-14 - - os: macos-15 - - os: macos-26 - - runs-on: ${{matrix.os}} - - steps: - - uses: actions/checkout@v6 - - - name: Install packages - if: matrix.install - run: sudo apt-get -y install ${{matrix.install}} - - - name: Setup Boost - run: | - echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY - LIBRARY=${GITHUB_REPOSITORY#*/} - echo LIBRARY: $LIBRARY - echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV - echo GITHUB_BASE_REF: $GITHUB_BASE_REF - echo GITHUB_REF: $GITHUB_REF - REF=${GITHUB_BASE_REF:-$GITHUB_REF} - REF=${REF#refs/heads/} - echo REF: $REF - BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true - echo BOOST_BRANCH: $BOOST_BRANCH - cd .. - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root - cd boost-root - cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY - git submodule update --init tools/boostdep - python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY - - - name: Configure - run: | - cd ../boost-root - mkdir __build__ && cd __build__ - cmake -DBOOST_INCLUDE_LIBRARIES=$LIBRARY -DBUILD_TESTING=ON .. - - - name: Build tests - run: | - cd ../boost-root/__build__ - cmake --build . --target tests - - - name: Run tests - run: | - cd ../boost-root/__build__ - ctest --output-on-failure --no-tests=error - - windows-cmake-subdir: - strategy: - fail-fast: false - matrix: - include: - - os: windows-2022 - - runs-on: ${{matrix.os}} - - steps: - - uses: actions/checkout@v6 - - - name: Setup Boost - shell: cmd - run: | - echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY% - for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi - echo LIBRARY: %LIBRARY% - echo LIBRARY=%LIBRARY%>>%GITHUB_ENV% - echo GITHUB_BASE_REF: %GITHUB_BASE_REF% - echo GITHUB_REF: %GITHUB_REF% - if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF% - set BOOST_BRANCH=develop - for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master - echo BOOST_BRANCH: %BOOST_BRANCH% - cd .. - git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root - cd boost-root - xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\ - git submodule update --init tools/boostdep - python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY% - - - name: Use library with add_subdirectory (Debug) - shell: cmd - run: | - cd ../boost-root/libs/%LIBRARY%/test/cmake_subdir_test - mkdir __build__ && cd __build__ - cmake .. - cmake --build . --config Debug - ctest --output-on-failure --no-tests=error -C Debug - - - name: Use library with add_subdirectory (Release) - shell: cmd - run: | - cd ../boost-root/libs/%LIBRARY%/test/cmake_subdir_test/__build__ - cmake --build . --config Release - ctest --output-on-failure --no-tests=error -C Release - - windows-cmake-install: - strategy: - fail-fast: false - matrix: - include: - - os: windows-2022 - - runs-on: ${{matrix.os}} - - steps: - - uses: actions/checkout@v6 - - - name: Setup Boost - shell: cmd - run: | - echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY% - for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi - echo LIBRARY: %LIBRARY% - echo LIBRARY=%LIBRARY%>>%GITHUB_ENV% - echo GITHUB_BASE_REF: %GITHUB_BASE_REF% - echo GITHUB_REF: %GITHUB_REF% - if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF% - set BOOST_BRANCH=develop - for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master - echo BOOST_BRANCH: %BOOST_BRANCH% - cd .. - git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root - cd boost-root - xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\ - git submodule update --init tools/boostdep - python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY% - - - name: Configure - shell: cmd - run: | - cd ../boost-root - mkdir __build__ && cd __build__ - cmake -DBOOST_INCLUDE_LIBRARIES=%LIBRARY% -DCMAKE_INSTALL_PREFIX=C:/cmake-prefix .. - - - name: Install (Debug) - shell: cmd - run: | - cd ../boost-root/__build__ - cmake --build . --target install --config Debug - - - name: Install (Release) - shell: cmd - run: | - cd ../boost-root/__build__ - cmake --build . --target install --config Release - - - name: Use the installed library (Debug) - shell: cmd - run: | - cd ../boost-root/libs/%LIBRARY%/test/cmake_install_test && mkdir __build__ && cd __build__ - cmake -DCMAKE_INSTALL_PREFIX=C:/cmake-prefix .. - cmake --build . --config Debug - ctest --output-on-failure --no-tests=error -C Debug - - - name: Use the installed library (Release) - shell: cmd - run: | - cd ../boost-root/libs/%LIBRARY%/test/cmake_install_test/__build__ - cmake --build . --config Release - ctest --output-on-failure --no-tests=error -C Release - - windows-cmake-test: - strategy: - fail-fast: false - matrix: - include: - - os: windows-2022 - - runs-on: ${{matrix.os}} - - steps: - - uses: actions/checkout@v6 - - - name: Setup Boost - shell: cmd - run: | - echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY% - for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi - echo LIBRARY: %LIBRARY% - echo LIBRARY=%LIBRARY%>>%GITHUB_ENV% - echo GITHUB_BASE_REF: %GITHUB_BASE_REF% - echo GITHUB_REF: %GITHUB_REF% - if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF% - set BOOST_BRANCH=develop - for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master - echo BOOST_BRANCH: %BOOST_BRANCH% - cd .. - git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root - cd boost-root - xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\ - git submodule update --init tools/boostdep - python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY% - - - name: Configure - shell: cmd - run: | - cd ../boost-root - mkdir __build__ && cd __build__ - cmake -DBOOST_INCLUDE_LIBRARIES=%LIBRARY% -DBUILD_TESTING=ON .. - - - name: Build tests (Debug) - shell: cmd - run: | - cd ../boost-root/__build__ - cmake --build . --target tests --config Debug - - - name: Run tests (Debug) - shell: cmd - run: | - cd ../boost-root/__build__ - ctest --output-on-failure --no-tests=error -C Debug - - - name: Build tests (Release) - shell: cmd - run: | - cd ../boost-root/__build__ - cmake --build . --target tests --config Release - - - name: Run tests (Release) - shell: cmd - run: | - cd ../boost-root/__build__ - ctest --output-on-failure --no-tests=error -C Release +jobs: + boost-ci: + uses: boostorg/boost-ci/.github/workflows/reusable.yml@master + with: + exclude_cxxstd: '98,03,0x,11' From a95abeee115300b8482f58bda0547311b98daaff Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Wed, 27 May 2026 19:36:35 +0800 Subject: [PATCH 2/5] cmake: avoid unneeded functional dependency --- test/cmake_subdir_test/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/test/cmake_subdir_test/CMakeLists.txt b/test/cmake_subdir_test/CMakeLists.txt index a5cfe9e..3d2107e 100644 --- a/test/cmake_subdir_test/CMakeLists.txt +++ b/test/cmake_subdir_test/CMakeLists.txt @@ -21,7 +21,6 @@ set(deps detail function function_types - functional fusion intrusive io From f29a27b253e7c639ebc121f0bbc3041c304f4d0d Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Wed, 27 May 2026 19:30:19 +0800 Subject: [PATCH 3/5] priority_queue: fix noexcept spec mismatch on defaulted move ctor/assign The move constructor and move assignment operator used noexcept( std::is_nothrow_move_assignable< super_t >::value ) on = default declarations. C++17+ requires the explicit noexcept spec to match the implicit one computed from all subobjects (including members like q_). When the vector allocator's propagation/is_always_equal traits cause the implicit spec to differ, compilers reject it. Fix by removing the noexcept clause entirely; the compiler deduces the correct exception specification automatically. --- include/boost/heap/priority_queue.hpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/boost/heap/priority_queue.hpp b/include/boost/heap/priority_queue.hpp index 98afcc8..6cde3aa 100644 --- a/include/boost/heap/priority_queue.hpp +++ b/include/boost/heap/priority_queue.hpp @@ -142,7 +142,7 @@ class priority_queue : * \b Complexity: Constant. * * */ - priority_queue( priority_queue&& rhs ) noexcept( std::is_nothrow_move_constructible< super_t >::value ) = default; + priority_queue( priority_queue&& rhs ) = default; /** * \b Effects: C++11-style move assignment. @@ -150,8 +150,7 @@ class priority_queue : * \b Complexity: Constant. * * */ - priority_queue& operator=( priority_queue&& rhs ) noexcept( std::is_nothrow_move_assignable< super_t >::value ) - = default; + priority_queue& operator=( priority_queue&& rhs ) = default; /** * \b Effects: Assigns priority queue from rhs. From 8f727c69bbea6d503888d4bb8a7a7a5fc655323d Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Wed, 27 May 2026 20:30:49 +0800 Subject: [PATCH 4/5] cmake test: add unified cmake_test dir, handle B2 install missing per-library cmake config Add test/cmake_test/CMakeLists.txt (new unified folder the CI checks first) with BOOST_CI_INSTALL_TEST branching, replacing the old cmake_install_test fallback. Also update cmake_install_test for backward compatibility. Root cause: b2 install calls boost-install.boost-install with empty library list for header-only libs lacking the 'install' option. BoostConfig.cmake is generated unconditionally, but per-library boost_heap-config.cmake is skipped. So find_package(Boost CONFIG REQUIRED COMPONENTS heap) fails because boost_find_component cannot find the per-library config. Fix: Use find_package(Boost CONFIG QUIET COMPONENTS heap) first. If Boost::heap target wasn't created (B2 install case), create it manually as INTERFACE IMPORTED using include dirs from Boost::headers. --- test/cmake_install_test/CMakeLists.txt | 11 ++++++++++- test/cmake_test/CMakeLists.txt | 26 ++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 test/cmake_test/CMakeLists.txt diff --git a/test/cmake_install_test/CMakeLists.txt b/test/cmake_install_test/CMakeLists.txt index d729e32..659440b 100644 --- a/test/cmake_install_test/CMakeLists.txt +++ b/test/cmake_install_test/CMakeLists.txt @@ -6,7 +6,16 @@ cmake_minimum_required(VERSION 3.5...3.16) project(cmake_install_test LANGUAGES CXX) -find_package(boost_heap REQUIRED) +if(BOOST_CI_INSTALL_TEST) + find_package(Boost CONFIG QUIET COMPONENTS heap) + if(NOT TARGET Boost::heap) + add_library(Boost::heap INTERFACE IMPORTED) + set_target_properties(Boost::heap PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Boost_INCLUDE_DIRS}") + endif() +else() + find_package(boost_heap REQUIRED) +endif() add_executable(main main.cpp) target_link_libraries(main Boost::heap) diff --git a/test/cmake_test/CMakeLists.txt b/test/cmake_test/CMakeLists.txt new file mode 100644 index 0000000..a3a5f4e --- /dev/null +++ b/test/cmake_test/CMakeLists.txt @@ -0,0 +1,26 @@ +# Copyright 2018, 2019 Peter Dimov +# 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 + +cmake_minimum_required(VERSION 3.8...3.20) + +project(boost_heap_cmake_test LANGUAGES CXX) + +if(BOOST_CI_INSTALL_TEST) + find_package(Boost CONFIG QUIET COMPONENTS heap) + if(NOT TARGET Boost::heap) + add_library(Boost::heap INTERFACE IMPORTED) + set_target_properties(Boost::heap PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Boost_INCLUDE_DIRS}") + endif() +else() + set(BOOST_INCLUDE_LIBRARIES heap) + add_subdirectory(../../../.. deps/boost EXCLUDE_FROM_ALL) +endif() + +add_executable(main ../cmake_install_test/main.cpp) +target_link_libraries(main Boost::heap) + +enable_testing() +add_test(NAME main COMMAND main) +add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C $) From c6b58c576c04064674828addfc35add10ff33fb6 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Wed, 27 May 2026 21:49:01 +0800 Subject: [PATCH 5/5] binomial_heap: fix stack-buffer-overflow in merge_and_clear_nodes when this_iterator reaches end() --- include/boost/heap/binomial_heap.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/boost/heap/binomial_heap.hpp b/include/boost/heap/binomial_heap.hpp index a72b342..e8b2828 100644 --- a/include/boost/heap/binomial_heap.hpp +++ b/include/boost/heap/binomial_heap.hpp @@ -686,6 +686,8 @@ class binomial_heap : } else { this_iterator = trees.erase( this_iterator ); carry_node = merge_trees( this_node, carry_node ); + if ( this_iterator == trees.end() ) + break; } goto try_again; } else {