1
0
forked from boostorg/bind

Sync from upstream.

This commit is contained in:
Rene Rivera
2024-07-12 08:54:07 -05:00
20 changed files with 104 additions and 139 deletions

View File

@@ -190,13 +190,6 @@ local windows_pipeline(name, image, environment, arch = "amd64") =
"g++-13-multilib", "g++-13-multilib",
), ),
linux_pipeline(
"Linux 23.04 GCC 13 64 ASAN",
"cppalliance/droneubuntu2304:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-13', CXXSTD: '11,14,17,20,2b', ADDRMD: '64' } + asan,
"g++-13-multilib",
),
linux_pipeline( linux_pipeline(
"Linux 23.04 GCC 13 32 UBSAN", "Linux 23.04 GCC 13 32 UBSAN",
"cppalliance/droneubuntu2304:1", "cppalliance/droneubuntu2304:1",
@@ -211,6 +204,34 @@ local windows_pipeline(name, image, environment, arch = "amd64") =
"g++-13-multilib", "g++-13-multilib",
), ),
linux_pipeline(
"Linux 24.04 GCC 14 32 ASAN",
"cppalliance/droneubuntu2404:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-14', CXXSTD: '11,14,17,20,2b', ADDRMD: '32' } + asan,
"g++-14-multilib",
),
linux_pipeline(
"Linux 24.04 GCC 14 64 ASAN",
"cppalliance/droneubuntu2404:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-14', CXXSTD: '11,14,17,20,2b', ADDRMD: '64' } + asan,
"g++-14-multilib",
),
linux_pipeline(
"Linux 24.04 GCC 14 32 UBSAN",
"cppalliance/droneubuntu2404:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-14', CXXSTD: '11,14,17,20,2b', ADDRMD: '32' } + ubsan,
"g++-14-multilib",
),
linux_pipeline(
"Linux 24.04 GCC 14 64 UBSAN",
"cppalliance/droneubuntu2404:1",
{ TOOLSET: 'gcc', COMPILER: 'g++-14', CXXSTD: '11,14,17,20,2b', ADDRMD: '64' } + ubsan,
"g++-14-multilib",
),
linux_pipeline( linux_pipeline(
"Linux 16.04 Clang 3.5", "Linux 16.04 Clang 3.5",
"cppalliance/droneubuntu1604:1", "cppalliance/droneubuntu1604:1",
@@ -281,6 +302,20 @@ local windows_pipeline(name, image, environment, arch = "amd64") =
"clang-17", "clang-17",
), ),
linux_pipeline(
"Linux 24.04 Clang 18 UBSAN",
"cppalliance/droneubuntu2404:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-18', CXXSTD: '11,14,17,20,2b' } + ubsan,
"clang-18",
),
linux_pipeline(
"Linux 24.04 Clang 18 ASAN",
"cppalliance/droneubuntu2404:1",
{ TOOLSET: 'clang', COMPILER: 'clang++-18', CXXSTD: '11,14,17,20,2b' } + asan,
"clang-18",
),
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,1z' } + ubsan, { TOOLSET: 'clang', COMPILER: 'clang++', CXXSTD: '11,14,1z' } + ubsan,

View File

@@ -49,8 +49,7 @@ jobs:
install: g++-10 install: g++-10
- toolset: gcc-11 - toolset: gcc-11
cxxstd: "11,14,17,2a" cxxstd: "11,14,17,2a"
os: ubuntu-20.04 os: ubuntu-22.04
install: g++-11
- toolset: gcc-12 - toolset: gcc-12
cxxstd: "11,14,17,20,2b" cxxstd: "11,14,17,20,2b"
os: ubuntu-22.04 os: ubuntu-22.04
@@ -60,6 +59,11 @@ jobs:
container: ubuntu:23.04 container: ubuntu:23.04
os: ubuntu-latest os: ubuntu-latest
install: g++-13 install: g++-13
- toolset: gcc-14
cxxstd: "11,14,17,20,2b"
container: ubuntu:24.04
os: ubuntu-latest
install: g++-14
- toolset: clang - toolset: clang
compiler: clang++-3.9 compiler: clang++-3.9
cxxstd: "11,14" cxxstd: "11,14"
@@ -144,14 +148,20 @@ jobs:
os: ubuntu-latest os: ubuntu-latest
install: clang-17 install: clang-17
- toolset: clang - toolset: clang
cxxstd: "11,14,17,2a" compiler: clang++-18
os: macos-11 cxxstd: "11,14,17,20,2b"
container: ubuntu:24.04
os: ubuntu-latest
install: clang-18
- toolset: clang - toolset: clang
cxxstd: "11,14,17,20,2b" cxxstd: "11,14,17,20,2b"
os: macos-12 os: macos-12
- toolset: clang - toolset: clang
cxxstd: "11,14,17,20,2b" cxxstd: "11,14,17,20,2b"
os: macos-13 os: macos-13
- toolset: clang
cxxstd: "11,14,17,20,2b"
os: macos-14
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
container: ${{matrix.container}} container: ${{matrix.container}}
@@ -161,6 +171,10 @@ jobs:
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 - uses: actions/checkout@v3
- name: Setup container environment - name: Setup container environment
@@ -236,7 +250,7 @@ jobs:
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Setup Boost - name: Setup Boost
shell: cmd shell: cmd
@@ -273,14 +287,14 @@ jobs:
include: include:
- os: ubuntu-20.04 - os: ubuntu-20.04
- os: ubuntu-22.04 - os: ubuntu-22.04
- os: macos-11
- os: macos-12 - os: macos-12
- os: macos-13 - os: macos-13
- os: macos-14
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Install packages - name: Install packages
if: matrix.install if: matrix.install
@@ -321,14 +335,14 @@ jobs:
include: include:
- os: ubuntu-20.04 - os: ubuntu-20.04
- os: ubuntu-22.04 - os: ubuntu-22.04
- os: macos-11
- os: macos-12 - os: macos-12
- os: macos-13 - os: macos-13
- os: macos-14
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Install packages - name: Install packages
if: matrix.install if: matrix.install
@@ -379,14 +393,14 @@ jobs:
include: include:
- os: ubuntu-20.04 - os: ubuntu-20.04
- os: ubuntu-22.04 - os: ubuntu-22.04
- os: macos-11
- os: macos-12 - os: macos-12
- os: macos-13 - os: macos-13
- os: macos-14
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Install packages - name: Install packages
if: matrix.install if: matrix.install
@@ -439,7 +453,7 @@ jobs:
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Setup Boost - name: Setup Boost
shell: cmd shell: cmd
@@ -488,7 +502,7 @@ jobs:
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Setup Boost - name: Setup Boost
shell: cmd shell: cmd
@@ -555,7 +569,7 @@ jobs:
runs-on: ${{matrix.os}} runs-on: ${{matrix.os}}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Setup Boost - name: Setup Boost
shell: cmd shell: cmd

View File

@@ -737,44 +737,18 @@ template<class F, class... A>
namespace _bi namespace _bi
{ {
template< class Pm, int I > struct add_cref; template<class M, int I> struct add_cref;
template< class M, class T > struct add_cref< M T::*, 0 > template<class M> struct add_cref<M, 0>
{ {
typedef M type; typedef M type;
}; };
template< class M, class T > struct add_cref< M T::*, 1 > template<class M> struct add_cref<M, 1>
{ {
#ifdef BOOST_MSVC typedef M const& type;
#pragma warning(push)
#pragma warning(disable:4180)
#endif
typedef M const & type;
#ifdef BOOST_MSVC
#pragma warning(pop)
#endif
}; };
template< class R, class T > struct add_cref< R (T::*) (), 1 >
{
typedef void type;
};
template< class R, class T > struct add_cref< R (T::*) () const, 1 >
{
typedef void type;
};
#if defined( __cpp_noexcept_function_type ) || defined( _NOEXCEPT_TYPES_SUPPORTED )
template< class R, class T > struct add_cref< R (T::*) () const noexcept, 1 >
{
typedef void type;
};
#endif // __cpp_noexcept_function_type
template<class R> struct isref template<class R> struct isref
{ {
enum value_type { value = 0 }; enum value_type { value = 0 };
@@ -790,30 +764,34 @@ template<class R> struct isref< R* >
enum value_type { value = 1 }; enum value_type { value = 1 };
}; };
template<class Pm, class A1> struct dm_result template<class M, class A1, bool fn = std::is_function<M>::value> struct dm_result
{ {
typedef typename add_cref< Pm, 1 >::type type;
}; };
template<class Pm, class R, class F, class L> struct dm_result< Pm, bind_t<R, F, L> > template<class M, class A1> struct dm_result<M, A1, false>
{
typedef typename add_cref< M, 1 >::type type;
};
template<class M, class R, class F, class L> struct dm_result<M, bind_t<R, F, L>, false>
{ {
typedef typename bind_t<R, F, L>::result_type result_type; typedef typename bind_t<R, F, L>::result_type result_type;
typedef typename add_cref< Pm, isref< result_type >::value >::type type; typedef typename add_cref< M, isref< result_type >::value >::type type;
}; };
} // namespace _bi } // namespace _bi
template< class A1, class M, class T > template<class A1, class M, class T>
_bi::bind_t< _bi::bind_t<
typename _bi::dm_result< M T::*, A1 >::type, typename _bi::dm_result<M, A1>::type,
_mfi::dm<M, T>, _mfi::dm<M, T>,
typename _bi::list_av<A1>::type typename _bi::list_av<A1>::type
> >
BOOST_BIND( M T::*f, A1 a1 ) BOOST_BIND( M T::*f, A1 a1 )
{ {
typedef typename _bi::dm_result< M T::*, A1 >::type result_type; typedef typename _bi::dm_result<M, A1>::type result_type;
typedef _mfi::dm<M, T> F; typedef _mfi::dm<M, T> F;
typedef typename _bi::list_av<A1>::type list_type; typedef typename _bi::list_av<A1>::type list_type;
return _bi::bind_t< result_type, F, list_type >( F( f ), list_type( a1 ) ); return _bi::bind_t< result_type, F, list_type >( F( f ), list_type( a1 ) );

View File

@@ -1,6 +1,6 @@
#include <boost/config.hpp> #include <boost/config.hpp>
#ifndef BOOST_MSVC #ifndef _MSC_VER
int main() int main()
{ {

View File

@@ -17,7 +17,7 @@
// http://www.boost.org/LICENSE_1_0.txt) // http://www.boost.org/LICENSE_1_0.txt)
// //
#if defined(BOOST_GCC) && BOOST_GCC >= 130000 && BOOST_GCC < 140000 #if defined(BOOST_GCC) && BOOST_GCC >= 130000 && BOOST_GCC < 150000
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113256 // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113256
# pragma GCC diagnostic ignored "-Wdangling-reference" # pragma GCC diagnostic ignored "-Wdangling-reference"
#endif #endif

View File

@@ -1,6 +1,6 @@
#include <boost/config.hpp> #include <boost/config.hpp>
#ifndef BOOST_MSVC #ifndef _MSC_VER
int main() int main()
{ {

View File

@@ -1,6 +1,6 @@
#include <boost/config.hpp> #include <boost/config.hpp>
#ifndef BOOST_MSVC #ifndef _MSC_VER
int main() int main()
{ {

View File

@@ -8,6 +8,13 @@
// http://www.boost.org/LICENSE_1_0.txt // http://www.boost.org/LICENSE_1_0.txt
// //
#if defined(__GNUC__)
// -Warray-bounds false positive under GCC 14 UBSAN
// ./boost/bind/mem_fn.hpp:74:59: error: array subscript 'int (**)(...)[0]' is partly outside array bounds of 'X [1]' [-Werror=array-bounds=]
// 74 | return (get_pointer( std::forward<U>( u ) )->*pm_)( std::forward<A>( a )... );
# pragma GCC diagnostic ignored "-Warray-bounds"
#endif
#include <boost/bind/bind.hpp> #include <boost/bind/bind.hpp>
#include <boost/ref.hpp> #include <boost/ref.hpp>
#include <boost/core/lightweight_test.hpp> #include <boost/core/lightweight_test.hpp>

View File

@@ -1,6 +1,6 @@
#include <boost/config.hpp> #include <boost/config.hpp>
#ifndef BOOST_MSVC #ifndef _MSC_VER
int main() int main()
{ {

View File

@@ -1,6 +1,6 @@
#include <boost/config.hpp> #include <boost/config.hpp>
#ifndef BOOST_MSVC #ifndef _MSC_VER
int main() int main()
{ {

View File

@@ -1,6 +1,6 @@
#include <boost/config.hpp> #include <boost/config.hpp>
#ifndef BOOST_MSVC #ifndef _MSC_VER
int main() int main()
{ {

View File

@@ -1,6 +1,6 @@
#include <boost/config.hpp> #include <boost/config.hpp>
#ifndef BOOST_MSVC #ifndef _MSC_VER
int main() int main()
{ {
@@ -29,18 +29,8 @@ int main()
#include <boost/mem_fn.hpp> #include <boost/mem_fn.hpp>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
#pragma warning(push, 3)
#endif
#include <iostream> #include <iostream>
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
#pragma warning(pop)
#endif
struct X struct X
{ {
mutable unsigned int hash; mutable unsigned int hash;

View File

@@ -19,18 +19,8 @@
#include <boost/mem_fn.hpp> #include <boost/mem_fn.hpp>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
#pragma warning(push, 3)
#endif
#include <iostream> #include <iostream>
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
#pragma warning(pop)
#endif
struct B struct B
{ {
mutable unsigned int hash; mutable unsigned int hash;

View File

@@ -1,6 +1,6 @@
#include <boost/config.hpp> #include <boost/config.hpp>
#ifndef BOOST_MSVC #ifndef _MSC_VER
int main() int main()
{ {

View File

@@ -1,6 +1,6 @@
#include <boost/config.hpp> #include <boost/config.hpp>
#ifndef BOOST_MSVC #ifndef _MSC_VER
int main() int main()
{ {
@@ -29,18 +29,8 @@ int main()
#include <boost/mem_fn.hpp> #include <boost/mem_fn.hpp>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
#pragma warning(push, 3)
#endif
#include <iostream> #include <iostream>
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
#pragma warning(pop)
#endif
struct X struct X
{ {
mutable unsigned int hash; mutable unsigned int hash;

View File

@@ -20,17 +20,8 @@
#include <boost/mem_fn.hpp> #include <boost/mem_fn.hpp>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
#pragma warning(push, 3)
#endif
#include <iostream> #include <iostream>
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
#pragma warning(pop)
#endif
unsigned int hash = 0; unsigned int hash = 0;
struct X struct X

View File

@@ -1,6 +1,6 @@
#include <boost/config.hpp> #include <boost/config.hpp>
#ifndef BOOST_MSVC #ifndef _MSC_VER
int main() int main()
{ {

View File

@@ -1,6 +1,6 @@
#include <boost/config.hpp> #include <boost/config.hpp>
#ifndef BOOST_MSVC #ifndef _MSC_VER
int main() int main()
{ {
@@ -29,18 +29,8 @@ int main()
#include <boost/mem_fn.hpp> #include <boost/mem_fn.hpp>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
#pragma warning(push, 3)
#endif
#include <iostream> #include <iostream>
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
#pragma warning(pop)
#endif
struct X struct X
{ {
mutable unsigned int hash; mutable unsigned int hash;

View File

@@ -19,18 +19,8 @@
#include <boost/mem_fn.hpp> #include <boost/mem_fn.hpp>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
#pragma warning(push, 3)
#endif
#include <iostream> #include <iostream>
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
#pragma warning(pop)
#endif
struct X struct X
{ {
mutable unsigned int hash; mutable unsigned int hash;

View File

@@ -19,18 +19,8 @@
#include <boost/mem_fn.hpp> #include <boost/mem_fn.hpp>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
#pragma warning(push, 3)
#endif
#include <iostream> #include <iostream>
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
#pragma warning(pop)
#endif
struct X struct X
{ {
mutable unsigned int hash; mutable unsigned int hash;