Compare commits

..

11 Commits

Author SHA1 Message Date
Peter Dimov
18650af517 Update .drone.jsonnet 2026-01-23 05:06:26 +02:00
Peter Dimov
0abb2de21f Merge pull request #57 from Lastique/feature/remove_static_assert
Remove dependencies on Boost.StaticAssert
2026-01-23 05:00:39 +02:00
Peter Dimov
b811c7a36d Update ci.yml 2026-01-22 21:51:13 +02:00
Andrey Semashev
a2eb32cbcd Remove dependencies on Boost.StaticAssert.
Boost.StaticAssert has been merged into Boost.Config, so remove
the dependency.
2026-01-22 19:29:06 +03:00
Peter Dimov
f6b538dbed Update .drone.jsonnet 2024-12-14 04:39:29 +02:00
Peter Dimov
69c3b8968a Apply Node20 workaround 2024-12-14 04:37:24 +02:00
Peter Dimov
7dd7abec65 Update ci.yml 2024-12-14 04:36:32 +02:00
Peter Dimov
89dfb032f2 Rename apply to apply_ to avoid msvc-14.3 conflict. Fixes #53. 2024-10-12 21:58:15 +03:00
Peter Dimov
ac731c96bb Add test for #53. Refs #53. 2024-10-12 21:32:25 +03:00
Peter Dimov
f3a164eaeb Update test/CMakeLists.txt 2024-10-07 22:36:22 +03:00
Peter Dimov
620c01266f Remove macos-12 from ci.yml, add macos-15 and ubuntu-24.04 2024-10-07 22:32:25 +03:00
7 changed files with 158 additions and 85 deletions

View File

@@ -34,7 +34,6 @@ local linux_pipeline(name, image, environment, packages = "", sources = [], arch
'set -e', 'set -e',
'uname -a', 'uname -a',
'echo $DRONE_STAGE_MACHINE', 'echo $DRONE_STAGE_MACHINE',
'wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -',
] + ] +
(if sources != [] then [ ('apt-add-repository "' + source + '"') for source in sources ] else []) + (if sources != [] then [ ('apt-add-repository "' + source + '"') for source in sources ] else []) +
(if packages != "" then [ 'apt-get update', 'apt-get -y install ' + packages ] else []) + (if packages != "" then [ 'apt-get update', 'apt-get -y install ' + packages ] else []) +
@@ -193,8 +192,8 @@ local windows_pipeline(name, image, environment, arch = "amd64") =
), ),
linux_pipeline( linux_pipeline(
"Linux 23.04 GCC 13 32/64", "Linux 24.04 GCC 13 32/64",
"cppalliance/droneubuntu2304:1", "cppalliance/droneubuntu2404:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-13', CXXSTD: '11,14,17,20,2b', ADDRMD: '32,64' }, { TOOLSET: 'gcc', COMPILER: 'g++-13', CXXSTD: '11,14,17,20,2b', ADDRMD: '32,64' },
"g++-13-multilib", "g++-13-multilib",
), ),
@@ -213,6 +212,13 @@ local windows_pipeline(name, image, environment, arch = "amd64") =
"g++-14-multilib", "g++-14-multilib",
), ),
linux_pipeline(
"Linux 25.10 GCC 15 32/64",
"cppalliance/droneubuntu2510:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-15', CXXSTD: '11,14,17,20,23,2c', ADDRMD: '32,64' },
"g++-15-multilib",
),
linux_pipeline( linux_pipeline(
"Linux 16.04 Clang 3.5", "Linux 16.04 Clang 3.5",
"cppalliance/droneubuntu1604:1", "cppalliance/droneubuntu1604:1",
@@ -333,40 +339,54 @@ local windows_pipeline(name, image, environment, arch = "amd64") =
), ),
linux_pipeline( linux_pipeline(
"Linux 23.04 Clang 16", "Linux 24.04 Clang 16",
"cppalliance/droneubuntu2304:1", "cppalliance/droneubuntu2404:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-16', CXXSTD: '11,14,17,20,2b' }, { TOOLSET: 'clang', COMPILER: 'clang++-16', CXXSTD: '11,14,17,20,2b' },
"clang-16", "clang-16",
), ),
linux_pipeline( linux_pipeline(
"Linux 23.10 Clang 17 UBSAN", "Linux 24.04 Clang 17",
"cppalliance/droneubuntu2310:1", "cppalliance/droneubuntu2404:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-17', CXXSTD: '11,14,17,20,2b' } + ubsan, { TOOLSET: 'clang', COMPILER: 'clang++-17', CXXSTD: '11,14,17,20,2b' },
"clang-17", "clang-17",
), ),
linux_pipeline( linux_pipeline(
"Linux 23.10 Clang 17 ASAN", "Linux 24.04 Clang 18",
"cppalliance/droneubuntu2310:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-17', CXXSTD: '11,14,17,20,2b' } + asan,
"clang-17",
),
linux_pipeline(
"Linux 24.04 Clang 18 UBSAN",
"cppalliance/droneubuntu2404:1", "cppalliance/droneubuntu2404:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-18', CXXSTD: '11,14,17,20,2b' } + ubsan, { TOOLSET: 'clang', COMPILER: 'clang++-18', CXXSTD: '11,14,17,20,2b' },
"clang-18", "clang-18",
), ),
linux_pipeline( linux_pipeline(
"Linux 24.04 Clang 18 ASAN", "Linux 24.04 Clang 19",
"cppalliance/droneubuntu2404:1", "cppalliance/droneubuntu2404:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-18', CXXSTD: '11,14,17,20,2b' } + asan, { TOOLSET: 'clang', COMPILER: 'clang++-18', CXXSTD: '11,14,17,20,2b' },
"clang-18", "clang-18",
), ),
linux_pipeline(
"Linux 24.04 Clang 20 UBSAN",
"cppalliance/droneubuntu2404:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-20', CXXSTD: '11,14,17,20,2b' } + ubsan,
"clang-20",
),
linux_pipeline(
"Linux 24.04 Clang 20 ASAN",
"cppalliance/droneubuntu2404:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-20', CXXSTD: '11,14,17,20,2b' } + asan,
"clang-20",
),
linux_pipeline(
"Linux 25.10 Clang 21",
"cppalliance/droneubuntu2510:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-21', CXXSTD: '11,14,17,20,23,2c' },
"clang-21",
),
macos_pipeline( macos_pipeline(
"MacOS 10.15 Xcode 12.2 UBSAN", "MacOS 10.15 Xcode 12.2 UBSAN",
{ TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '11,14,17,2a' } + ubsan, { TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '11,14,17,2a' } + ubsan,
@@ -412,4 +432,10 @@ local windows_pipeline(name, image, environment, arch = "amd64") =
"cppalliance/dronevs2022:1", "cppalliance/dronevs2022:1",
{ TOOLSET: 'msvc-14.3', CXXSTD: '14,17,20,latest' }, { TOOLSET: 'msvc-14.3', CXXSTD: '14,17,20,latest' },
), ),
windows_pipeline(
"Windows VS2026 msvc-14.5",
"cppalliance/dronevs2026:1",
{ TOOLSET: 'msvc-14.5', CXXSTD: '14,17,20,latest' },
),
] ]

View File

@@ -49,22 +49,26 @@ jobs:
address-model: 32,64 address-model: 32,64
- toolset: gcc-7 - toolset: gcc-7
cxxstd: "11,14,17" cxxstd: "11,14,17"
os: ubuntu-20.04 container: ubuntu:20.04
os: ubuntu-latest
install: g++-7-multilib install: g++-7-multilib
address-model: 32,64 address-model: 32,64
- toolset: gcc-8 - toolset: gcc-8
cxxstd: "11,14,17,2a" cxxstd: "11,14,17,2a"
os: ubuntu-20.04 container: ubuntu:20.04
os: ubuntu-latest
install: g++-8-multilib install: g++-8-multilib
address-model: 32,64 address-model: 32,64
- toolset: gcc-9 - toolset: gcc-9
cxxstd: "11,14,17,2a" cxxstd: "11,14,17,2a"
os: ubuntu-20.04 container: ubuntu:20.04
os: ubuntu-latest
install: g++-9-multilib install: g++-9-multilib
address-model: 32,64 address-model: 32,64
- toolset: gcc-10 - toolset: gcc-10
cxxstd: "11,14,17,2a" cxxstd: "11,14,17,2a"
os: ubuntu-20.04 container: ubuntu:20.04
os: ubuntu-latest
install: g++-10-multilib install: g++-10-multilib
address-model: 32,64 address-model: 32,64
- toolset: gcc-11 - toolset: gcc-11
@@ -79,7 +83,7 @@ jobs:
address-model: 32,64 address-model: 32,64
- toolset: gcc-13 - toolset: gcc-13
cxxstd: "11,14,17,20,2b" cxxstd: "11,14,17,20,2b"
container: ubuntu:23.04 container: ubuntu:24.04
os: ubuntu-latest os: ubuntu-latest
install: g++-13-multilib install: g++-13-multilib
address-model: 32,64 address-model: 32,64
@@ -89,6 +93,12 @@ jobs:
os: ubuntu-latest os: ubuntu-latest
install: g++-14-multilib install: g++-14-multilib
address-model: 32,64 address-model: 32,64
- toolset: gcc-15
cxxstd: "11,14,17,20,23,2c"
container: ubuntu:25.10
os: ubuntu-latest
install: g++-15-multilib
address-model: 32,64
- toolset: clang - toolset: clang
compiler: clang++-3.9 compiler: clang++-3.9
cxxstd: "11,14" cxxstd: "11,14"
@@ -110,35 +120,45 @@ jobs:
- toolset: clang - toolset: clang
compiler: clang++-6.0 compiler: clang++-6.0
cxxstd: "11,14,17" cxxstd: "11,14,17"
os: ubuntu-20.04 container: ubuntu:20.04
os: ubuntu-latest
install: clang-6.0 install: clang-6.0
- toolset: clang - toolset: clang
compiler: clang++-7 compiler: clang++-7
cxxstd: "11,14,17" cxxstd: "11,14,17"
os: ubuntu-20.04 container: ubuntu:20.04
os: ubuntu-latest
install: clang-7 install: clang-7
- toolset: clang - toolset: clang
compiler: clang++-8 compiler: clang++-8
cxxstd: "11,14,17" cxxstd: "11,14,17"
os: ubuntu-20.04 container: ubuntu:20.04
os: ubuntu-latest
install: clang-8 install: clang-8
- toolset: clang - toolset: clang
compiler: clang++-9 compiler: clang++-9
cxxstd: "11,14,17" cxxstd: "11,14,17"
os: ubuntu-20.04 container: ubuntu:20.04
os: ubuntu-latest
install: clang-9 install: clang-9
- toolset: clang - toolset: clang
compiler: clang++-10 compiler: clang++-10
cxxstd: "11,14,17,2a" cxxstd: "11,14,17,2a"
os: ubuntu-20.04 container: ubuntu:20.04
os: ubuntu-latest
install: clang-10
- toolset: clang - toolset: clang
compiler: clang++-11 compiler: clang++-11
cxxstd: "11,14,17,2a" cxxstd: "11,14,17,2a"
os: ubuntu-20.04 container: ubuntu:20.04
os: ubuntu-latest
install: clang-11
- toolset: clang - toolset: clang
compiler: clang++-12 compiler: clang++-12
cxxstd: "11,14,17,20" cxxstd: "11,14,17,20"
os: ubuntu-20.04 container: ubuntu:20.04
os: ubuntu-latest
install: clang-12
- toolset: clang - toolset: clang
compiler: clang++-13 compiler: clang++-13
cxxstd: "11,14,17,20" cxxstd: "11,14,17,20"
@@ -160,13 +180,13 @@ jobs:
- toolset: clang - toolset: clang
compiler: clang++-16 compiler: clang++-16
cxxstd: "11,14,17,20,2b" cxxstd: "11,14,17,20,2b"
container: ubuntu:23.04 container: ubuntu:24.04
os: ubuntu-latest os: ubuntu-latest
install: clang-16 install: clang-16
- toolset: clang - toolset: clang
compiler: clang++-17 compiler: clang++-17
cxxstd: "11,14,17,20,2b" cxxstd: "11,14,17,20,2b"
container: ubuntu:23.10 container: ubuntu:24.04
os: ubuntu-latest os: ubuntu-latest
install: clang-17 install: clang-17
- toolset: clang - toolset: clang
@@ -176,34 +196,60 @@ jobs:
os: ubuntu-latest os: ubuntu-latest
install: clang-18 install: clang-18
- toolset: clang - toolset: clang
compiler: clang++-19
cxxstd: "11,14,17,20,2b" cxxstd: "11,14,17,20,2b"
os: macos-12 container: ubuntu:24.04
os: ubuntu-latest
install: clang-19
- toolset: clang - toolset: clang
cxxstd: "11,14,17,20,2b" compiler: clang++-20
os: macos-13 cxxstd: "11,14,17,20,23,2c"
container: ubuntu:24.04
os: ubuntu-latest
install: clang-20
- toolset: clang
compiler: clang++-21
cxxstd: "11,14,17,20,23,2c"
container: ubuntu:25.10
os: ubuntu-latest
install: clang-21
- toolset: clang - toolset: clang
cxxstd: "11,14,17,20,2b" cxxstd: "11,14,17,20,2b"
os: macos-14 os: macos-14
- toolset: clang
cxxstd: "11,14,17,20,2b"
os: macos-15
- toolset: clang
cxxstd: "11,14,17,20,23,2c"
os: macos-26
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
container: ${{matrix.container}}
container:
image: ${{matrix.container}}
volumes:
- /node20217:/node20217:rw,rshared
- ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }}
defaults: defaults:
run: run:
shell: bash shell: bash
steps: steps:
- name: Enable Node 16
run: |
echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV
- uses: actions/checkout@v3
- name: Setup container environment - name: Setup container environment
if: matrix.container if: matrix.container
run: | run: |
apt-get update apt-get update
apt-get -y install sudo python3 git g++ apt-get -y install sudo python3 git g++ curl xz-utils
- name: Install nodejs20glibc2.17
if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }}
run: |
curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz
tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217
ldd /__e/node20/bin/node
- uses: actions/checkout@v4
- name: Install packages - name: Install packages
if: matrix.install if: matrix.install
@@ -249,26 +295,18 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
- toolset: msvc-14.0
cxxstd: 14,latest
addrmd: 32,64
os: windows-2019
- toolset: msvc-14.2
cxxstd: "14,17,20,latest"
addrmd: 32,64
os: windows-2019
- toolset: msvc-14.3 - toolset: msvc-14.3
cxxstd: "14,17,20,latest" cxxstd: "14,17,20,latest"
addrmd: 32,64 addrmd: 32,64
os: windows-2022 os: windows-2022
- toolset: clang-win - toolset: clang-win
cxxstd: "14,17,latest" cxxstd: "14,17,20,latest"
addrmd: 32,64 addrmd: 32,64
os: windows-2022 os: windows-2025
- toolset: gcc - toolset: gcc
cxxstd: "11,14,17,2a" cxxstd: "11,14,17,2a"
addrmd: 64 addrmd: 64
os: windows-2019 os: windows-2022
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
@@ -308,11 +346,8 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
- os: ubuntu-20.04 - os: ubuntu-latest
- os: ubuntu-22.04 - os: macos-latest
- os: macos-12
- os: macos-13
- os: macos-14
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
@@ -356,11 +391,8 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
- os: ubuntu-20.04 - os: ubuntu-latest
- os: ubuntu-22.04 - os: macos-latest
- os: macos-12
- os: macos-13
- os: macos-14
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
@@ -414,11 +446,8 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
- os: ubuntu-20.04 - os: ubuntu-latest
- os: ubuntu-22.04 - os: macos-latest
- os: macos-12
- os: macos-13
- os: macos-14
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
@@ -470,8 +499,7 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
- os: windows-2019 - os: windows-latest
- os: windows-2022
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
@@ -519,8 +547,7 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
- os: windows-2019 - os: windows-latest
- os: windows-2022
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
@@ -586,8 +613,7 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
- os: windows-2019 - os: windows-latest
- os: windows-2022
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}

View File

@@ -261,9 +261,9 @@ namespace boost {
actual invoker that will be used for the given function actual invoker that will be used for the given function
object. object.
Each specialization contains an "apply" nested class template Each specialization contains an "apply_" nested class template
that accepts the function object, return type, function that accepts the function object, return type, function
argument types, and allocator. The resulting "apply" class argument types, and allocator. The resulting "apply_" class
contains two typedefs, "invoker_type" and "manager_type", contains two typedefs, "invoker_type" and "manager_type",
which correspond to the invoker and manager types. */ which correspond to the invoker and manager types. */
template<typename Tag> template<typename Tag>
@@ -275,7 +275,7 @@ namespace boost {
{ {
template<typename FunctionPtr, template<typename FunctionPtr,
typename R, typename... T> typename R, typename... T>
struct apply struct apply_
{ {
typedef typename get_function_invoker< typedef typename get_function_invoker<
FunctionPtr, FunctionPtr,
@@ -308,7 +308,7 @@ namespace boost {
{ {
template<typename MemberPtr, template<typename MemberPtr,
typename R, typename... T> typename R, typename... T>
struct apply struct apply_
{ {
typedef typename get_member_invoker< typedef typename get_member_invoker<
MemberPtr, MemberPtr,
@@ -341,7 +341,7 @@ namespace boost {
{ {
template<typename FunctionObj, template<typename FunctionObj,
typename R, typename... T> typename R, typename... T>
struct apply struct apply_
{ {
typedef typename get_function_obj_invoker< typedef typename get_function_obj_invoker<
FunctionObj, FunctionObj,
@@ -374,7 +374,7 @@ namespace boost {
{ {
template<typename RefWrapper, template<typename RefWrapper,
typename R, typename... T> typename R, typename... T>
struct apply struct apply_
{ {
typedef typename get_function_ref_invoker< typedef typename get_function_ref_invoker<
typename RefWrapper::type, typename RefWrapper::type,
@@ -923,7 +923,7 @@ namespace boost {
typedef typename boost::detail::function::get_function_tag<Functor>::type tag; typedef typename boost::detail::function::get_function_tag<Functor>::type tag;
typedef boost::detail::function::get_invoker<tag> get_invoker; typedef boost::detail::function::get_invoker<tag> get_invoker;
typedef typename get_invoker:: typedef typename get_invoker::
template apply<Functor, R, template apply_<Functor, R,
T...> T...>
handler_type; handler_type;

View File

@@ -6,6 +6,6 @@ include(BoostTestJamfile OPTIONAL RESULT_VARIABLE HAVE_BOOST_TEST)
if(HAVE_BOOST_TEST) if(HAVE_BOOST_TEST)
boost_test_jamfile(FILE Jamfile.v2 LINK_LIBRARIES Boost::function Boost::core Boost::lambda) boost_test_jamfile(FILE Jamfile.v2 LINK_LIBRARIES Boost::function Boost::core Boost::lambda Boost::move)
endif() endif()

View File

@@ -93,3 +93,5 @@ run contains2_test.cpp : : : <rtti>off <toolset>gcc-4.4,<cxxstd>0x:<build>no : c
run contains3_test.cpp ; run contains3_test.cpp ;
run contains3_test.cpp : : : <rtti>off <toolset>gcc-4.4,<cxxstd>0x:<build>no : contains3_test_no_rtti ; run contains3_test.cpp : : : <rtti>off <toolset>gcc-4.4,<cxxstd>0x:<build>no : contains3_test_no_rtti ;
compile issue_53.cpp ;

View File

@@ -20,7 +20,6 @@ throw_exception
# Secondary dependencies # Secondary dependencies
static_assert
) )
foreach(dep IN LISTS deps) foreach(dep IN LISTS deps)

20
test/issue_53.cpp Normal file
View File

@@ -0,0 +1,20 @@
// Copyright 2024 Peter Dimov
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
//
// https://github.com/boostorg/function/issues/53
#include <boost/bind/apply.hpp>
#include <boost/bind/bind.hpp>
#include <boost/function.hpp>
int TestArg( int, double )
{
return 0;
}
void f()
{
boost::function<int(int)> fn = boost::bind( &TestArg, boost::placeholders::_1, 1.0 );
}