mirror of
https://github.com/boostorg/bind.git
synced 2026-04-13 13:15:50 +02:00
Compare commits
40 Commits
boost-1.60
...
boost-1.64
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5856dd356b | ||
|
|
ce4df8a666 | ||
|
|
ecc0e72841 | ||
|
|
b51caf1934 | ||
|
|
2a29af7e4f | ||
|
|
2e23da9630 | ||
|
|
6587f1f05d | ||
|
|
60d3e0f4f3 | ||
|
|
b4ff3ca541 | ||
|
|
209bda011d | ||
|
|
1340966709 | ||
|
|
c61026bb81 | ||
|
|
473155eebe | ||
|
|
a1f6206a49 | ||
|
|
03a25d41da | ||
|
|
808996b70f | ||
|
|
3c56630b54 | ||
|
|
494d2fede7 | ||
|
|
2821b51a50 | ||
|
|
6616add21d | ||
|
|
3d957988d0 | ||
|
|
b3e40992ca | ||
|
|
8bca02ab4d | ||
|
|
cea67e705b | ||
|
|
154f70cf7a | ||
|
|
7a2d6aeaf3 | ||
|
|
ad4ac867ce | ||
|
|
42c1323df9 | ||
|
|
36b157c3e8 | ||
|
|
d6e4fab051 | ||
|
|
4d83ab068f | ||
|
|
5500f3363c | ||
|
|
cb7e7f179b | ||
|
|
679ff6b5ba | ||
|
|
8dbd26692f | ||
|
|
21a6662b35 | ||
|
|
41ba1a07c0 | ||
|
|
59b0379969 | ||
|
|
bf402c726c | ||
|
|
5ac488c223 |
276
.travis.yml
Normal file
276
.travis.yml
Normal file
@@ -0,0 +1,276 @@
|
||||
# Copyright 2016 Peter Dimov
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
|
||||
language: cpp
|
||||
|
||||
sudo: false
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- develop
|
||||
|
||||
env:
|
||||
matrix:
|
||||
- BOGUS_JOB=true
|
||||
|
||||
matrix:
|
||||
|
||||
exclude:
|
||||
- env: BOGUS_JOB=true
|
||||
|
||||
include:
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++ CXXSTD=c++03
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=c++03
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.7
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.7
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=c++03
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.8
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.8
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=c++03
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.9
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-4.9
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++03
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-5
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-5
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++14
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-5
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++03
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++14
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- g++-6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=c++03
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.6
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.6
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.6
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=c++03
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.7
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.7
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=c++11
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.7
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.7
|
||||
|
||||
- os: linux
|
||||
env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++03
|
||||
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=c++11
|
||||
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=c++14
|
||||
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=c++1z
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- clang-3.8
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.8
|
||||
|
||||
- os: osx
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03
|
||||
|
||||
- os: osx
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11
|
||||
|
||||
- os: osx
|
||||
env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14
|
||||
|
||||
install:
|
||||
- cd ..
|
||||
- git clone -b $TRAVIS_BRANCH https://github.com/boostorg/boost.git boost-root
|
||||
- cd boost-root
|
||||
- git submodule init libs/align
|
||||
- git submodule init libs/assert
|
||||
- git submodule init libs/config
|
||||
- git submodule init libs/core
|
||||
- git submodule init libs/function
|
||||
- git submodule init libs/integer
|
||||
- git submodule init libs/move
|
||||
- git submodule init libs/mpl
|
||||
- git submodule init libs/predef
|
||||
- git submodule init libs/preprocessor
|
||||
- git submodule init libs/smart_ptr
|
||||
- git submodule init libs/static_assert
|
||||
- git submodule init libs/throw_exception
|
||||
- git submodule init libs/type_index
|
||||
- git submodule init libs/type_traits
|
||||
- git submodule init tools/build
|
||||
- git submodule init tools/inspect
|
||||
- git submodule update
|
||||
- cp -r $TRAVIS_BUILD_DIR/* libs/bind
|
||||
- ./bootstrap.sh
|
||||
- ./b2 headers
|
||||
|
||||
script:
|
||||
- |-
|
||||
echo "using $TOOLSET : : $COMPILER : <cxxflags>-std=$CXXSTD ;" > ~/user-config.jam
|
||||
- ./b2 libs/bind/test toolset=$TOOLSET
|
||||
|
||||
notifications:
|
||||
email:
|
||||
on_success: always
|
||||
6
README.md
Normal file
6
README.md
Normal file
@@ -0,0 +1,6 @@
|
||||
# Boost.Bind
|
||||
|
||||
Branch | Travis | Appveyor
|
||||
---------|--------|---------
|
||||
Develop | [](https://travis-ci.org/boostorg/bind) | [](https://ci.appveyor.com/project/pdimov/bind)
|
||||
Master | [](https://travis-ci.org/boostorg/bind) | [](https://ci.appveyor.com/project/pdimov/bind)
|
||||
43
appveyor.yml
Normal file
43
appveyor.yml
Normal file
@@ -0,0 +1,43 @@
|
||||
# Copyright 2016 Peter Dimov
|
||||
# Distributed under the Boost Software License, Version 1.0.
|
||||
# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
|
||||
|
||||
version: 1.0.{build}-{branch}
|
||||
|
||||
shallow_clone: true
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
- develop
|
||||
|
||||
install:
|
||||
- cd ..
|
||||
- git clone -b %APPVEYOR_REPO_BRANCH% https://github.com/boostorg/boost.git boost-root
|
||||
- cd boost-root
|
||||
- git submodule init libs/align
|
||||
- git submodule init libs/assert
|
||||
- git submodule init libs/config
|
||||
- git submodule init libs/core
|
||||
- git submodule init libs/function
|
||||
- git submodule init libs/integer
|
||||
- git submodule init libs/move
|
||||
- git submodule init libs/mpl
|
||||
- git submodule init libs/predef
|
||||
- git submodule init libs/preprocessor
|
||||
- git submodule init libs/smart_ptr
|
||||
- git submodule init libs/static_assert
|
||||
- git submodule init libs/throw_exception
|
||||
- git submodule init libs/type_index
|
||||
- git submodule init libs/type_traits
|
||||
- git submodule init tools/build
|
||||
- git submodule init tools/inspect
|
||||
- git submodule update
|
||||
- xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\bind
|
||||
- bootstrap
|
||||
- b2 headers
|
||||
|
||||
build: off
|
||||
|
||||
test_script:
|
||||
- b2 libs/bind/test toolset=msvc-9.0,msvc-10.0,msvc-11.0,msvc-14.0
|
||||
@@ -52,3 +52,9 @@ boostbook standalone_mem_fn
|
||||
|
||||
<xsl:param>generate.manifest=0
|
||||
;
|
||||
|
||||
###############################################################################
|
||||
alias boostdoc ;
|
||||
explicit boostdoc ;
|
||||
alias boostrelease : standalone_bind standalone_mem_fn ;
|
||||
explicit boostrelease ;
|
||||
|
||||
@@ -21,20 +21,27 @@
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/is_placeholder.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
|
||||
template<bool Eq> struct _arg_eq
|
||||
{
|
||||
};
|
||||
|
||||
template<> struct _arg_eq<true>
|
||||
{
|
||||
typedef void type;
|
||||
};
|
||||
|
||||
template< int I > struct arg
|
||||
{
|
||||
BOOST_CONSTEXPR arg()
|
||||
{
|
||||
}
|
||||
|
||||
template< class T > BOOST_CONSTEXPR arg( T const & /* t */ )
|
||||
template< class T > BOOST_CONSTEXPR arg( T const & /* t */, typename _arg_eq< I == is_placeholder<T>::value >::type * = 0 )
|
||||
{
|
||||
BOOST_STATIC_ASSERT( I == is_placeholder<T>::value );
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -887,9 +887,17 @@ public:
|
||||
|
||||
template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
|
||||
{
|
||||
rrlist1<A1&> a( a1_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
|
||||
{
|
||||
rrlist1<A1&> a( a1_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
};
|
||||
|
||||
template< class A1, class A2 > class rrlist2
|
||||
@@ -915,9 +923,17 @@ public:
|
||||
|
||||
template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
|
||||
{
|
||||
rrlist2<A1&, A2&> a( a1_, a2_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
|
||||
{
|
||||
rrlist2<A1&, A2&> a( a1_, a2_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
};
|
||||
|
||||
template< class A1, class A2, class A3 > class rrlist3
|
||||
@@ -946,9 +962,17 @@ public:
|
||||
|
||||
template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
|
||||
{
|
||||
rrlist3<A1&, A2&, A3&> a( a1_, a2_, a3_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
|
||||
{
|
||||
rrlist3<A1&, A2&, A3&> a( a1_, a2_, a3_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
};
|
||||
|
||||
template< class A1, class A2, class A3, class A4 > class rrlist4
|
||||
@@ -980,9 +1004,17 @@ public:
|
||||
|
||||
template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
|
||||
{
|
||||
rrlist4<A1&, A2&, A3&, A4&> a( a1_, a2_, a3_, a4_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
|
||||
{
|
||||
rrlist4<A1&, A2&, A3&, A4&> a( a1_, a2_, a3_, a4_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
};
|
||||
|
||||
template< class A1, class A2, class A3, class A4, class A5 > class rrlist5
|
||||
@@ -1017,9 +1049,17 @@ public:
|
||||
|
||||
template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
|
||||
{
|
||||
rrlist5<A1&, A2&, A3&, A4&, A5&> a( a1_, a2_, a3_, a4_, a5_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
|
||||
{
|
||||
rrlist5<A1&, A2&, A3&, A4&, A5&> a( a1_, a2_, a3_, a4_, a5_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
};
|
||||
|
||||
template< class A1, class A2, class A3, class A4, class A5, class A6 > class rrlist6
|
||||
@@ -1057,9 +1097,17 @@ public:
|
||||
|
||||
template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
|
||||
{
|
||||
rrlist6<A1&, A2&, A3&, A4&, A5&, A6&> a( a1_, a2_, a3_, a4_, a5_, a6_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
|
||||
{
|
||||
rrlist6<A1&, A2&, A3&, A4&, A5&, A6&> a( a1_, a2_, a3_, a4_, a5_, a6_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
};
|
||||
|
||||
template< class A1, class A2, class A3, class A4, class A5, class A6, class A7 > class rrlist7
|
||||
@@ -1100,9 +1148,17 @@ public:
|
||||
|
||||
template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
|
||||
{
|
||||
rrlist7<A1&, A2&, A3&, A4&, A5&, A6&, A7&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
|
||||
{
|
||||
rrlist7<A1&, A2&, A3&, A4&, A5&, A6&, A7&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
};
|
||||
|
||||
template< class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 > class rrlist8
|
||||
@@ -1146,9 +1202,17 @@ public:
|
||||
|
||||
template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
|
||||
{
|
||||
rrlist8<A1&, A2&, A3&, A4&, A5&, A6&, A7&, A8&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
|
||||
{
|
||||
rrlist8<A1&, A2&, A3&, A4&, A5&, A6&, A7&, A8&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
};
|
||||
|
||||
template< class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9 > class rrlist9
|
||||
@@ -1195,9 +1259,17 @@ public:
|
||||
|
||||
template<class T> T & operator[] (reference_wrapper<T> const & v) const { return v.get(); }
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> & b) const
|
||||
{
|
||||
rrlist9<A1&, A2&, A3&, A4&, A5&, A6&, A7&, A8&, A9&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const { return b.eval(*this); }
|
||||
template<class R, class F, class L> typename result_traits<R, F>::type operator[] (bind_t<R, F, L> const & b) const
|
||||
{
|
||||
rrlist9<A1&, A2&, A3&, A4&, A5&, A6&, A7&, A8&, A9&> a( a1_, a2_, a3_, a4_, a5_, a6_, a7_, a8_, a9_ );
|
||||
return b.eval( a );
|
||||
}
|
||||
};
|
||||
|
||||
template<class R, class F, class L> class bind_t
|
||||
|
||||
@@ -55,4 +55,8 @@ test-suite "bind"
|
||||
[ run bind_function_ap_test.cpp ]
|
||||
[ run bind_type_test.cpp ]
|
||||
[ run bind_unique_ptr_test.cpp ]
|
||||
[ run bind_nested_rv_test.cpp ]
|
||||
[ compile arg_copy_test.cpp ]
|
||||
[ compile-fail arg_copy_fail.cpp ]
|
||||
[ run placeholder_std_bind_test.cpp ]
|
||||
;
|
||||
|
||||
19
test/arg_copy_fail.cpp
Normal file
19
test/arg_copy_fail.cpp
Normal file
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// arg_copy_fail.cpp - arg<1> to arg<2>
|
||||
//
|
||||
// Copyright 2016 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
|
||||
//
|
||||
|
||||
#include <boost/bind/arg.hpp>
|
||||
|
||||
//
|
||||
|
||||
int main()
|
||||
{
|
||||
boost::arg<1> a1(( boost::arg<2>() ));
|
||||
(void)a1;
|
||||
}
|
||||
34
test/arg_copy_test.cpp
Normal file
34
test/arg_copy_test.cpp
Normal file
@@ -0,0 +1,34 @@
|
||||
//
|
||||
// arg_copy_test.cpp - copying a custom placeholder _1 to arg<1>
|
||||
//
|
||||
// Copyright 2016 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
|
||||
//
|
||||
|
||||
#include <boost/is_placeholder.hpp>
|
||||
#include <boost/bind/arg.hpp>
|
||||
|
||||
//
|
||||
|
||||
template<int I> struct ph
|
||||
{
|
||||
};
|
||||
|
||||
namespace boost
|
||||
{
|
||||
|
||||
template<int I> struct is_placeholder< ::ph<I> >
|
||||
{
|
||||
enum _vt { value = I };
|
||||
};
|
||||
|
||||
} // namespace boost
|
||||
|
||||
int main()
|
||||
{
|
||||
boost::arg<1> a1 = ph<1>();
|
||||
(void)a1;
|
||||
}
|
||||
@@ -10,6 +10,14 @@
|
||||
// http://www.boost.org/LICENSE_1_0.txt
|
||||
//
|
||||
|
||||
#if defined( BOOST_NO_AUTO_PTR )
|
||||
|
||||
int main()
|
||||
{
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#if defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ >= 406 )
|
||||
# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||
#elif defined( __clang__ ) && defined( __has_warning )
|
||||
@@ -222,3 +230,5 @@ int main()
|
||||
test();
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#endif // #if defined( BOOST_NO_AUTO_PTR )
|
||||
|
||||
177
test/bind_nested_rv_test.cpp
Normal file
177
test/bind_nested_rv_test.cpp
Normal file
@@ -0,0 +1,177 @@
|
||||
#include <boost/config.hpp>
|
||||
|
||||
//
|
||||
// bind_nested_rv_test.cpp
|
||||
//
|
||||
// Copyright (c) 2016 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
|
||||
//
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
#include <boost/make_shared.hpp>
|
||||
#include <boost/function.hpp>
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
||||
//
|
||||
|
||||
bool f1( boost::shared_ptr<int> p1 )
|
||||
{
|
||||
BOOST_TEST( p1 != 0 && *p1 == 1 );
|
||||
return true;
|
||||
}
|
||||
|
||||
bool f2( boost::shared_ptr<int> p1, boost::shared_ptr<int> p2 )
|
||||
{
|
||||
BOOST_TEST( p1 != 0 && *p1 == 1 );
|
||||
BOOST_TEST( p2 != 0 && *p2 == 2 );
|
||||
return true;
|
||||
}
|
||||
|
||||
bool f3( boost::shared_ptr<int> p1, boost::shared_ptr<int> p2, boost::shared_ptr<int> p3 )
|
||||
{
|
||||
BOOST_TEST( p1 != 0 && *p1 == 1 );
|
||||
BOOST_TEST( p2 != 0 && *p2 == 2 );
|
||||
BOOST_TEST( p3 != 0 && *p3 == 3 );
|
||||
return true;
|
||||
}
|
||||
|
||||
bool f4( boost::shared_ptr<int> p1, boost::shared_ptr<int> p2, boost::shared_ptr<int> p3, boost::shared_ptr<int> p4 )
|
||||
{
|
||||
BOOST_TEST( p1 != 0 && *p1 == 1 );
|
||||
BOOST_TEST( p2 != 0 && *p2 == 2 );
|
||||
BOOST_TEST( p3 != 0 && *p3 == 3 );
|
||||
BOOST_TEST( p4 != 0 && *p4 == 4 );
|
||||
return true;
|
||||
}
|
||||
|
||||
bool f5( boost::shared_ptr<int> p1, boost::shared_ptr<int> p2, boost::shared_ptr<int> p3, boost::shared_ptr<int> p4, boost::shared_ptr<int> p5 )
|
||||
{
|
||||
BOOST_TEST( p1 != 0 && *p1 == 1 );
|
||||
BOOST_TEST( p2 != 0 && *p2 == 2 );
|
||||
BOOST_TEST( p3 != 0 && *p3 == 3 );
|
||||
BOOST_TEST( p4 != 0 && *p4 == 4 );
|
||||
BOOST_TEST( p5 != 0 && *p5 == 5 );
|
||||
return true;
|
||||
}
|
||||
|
||||
bool f6( boost::shared_ptr<int> p1, boost::shared_ptr<int> p2, boost::shared_ptr<int> p3, boost::shared_ptr<int> p4, boost::shared_ptr<int> p5, boost::shared_ptr<int> p6 )
|
||||
{
|
||||
BOOST_TEST( p1 != 0 && *p1 == 1 );
|
||||
BOOST_TEST( p2 != 0 && *p2 == 2 );
|
||||
BOOST_TEST( p3 != 0 && *p3 == 3 );
|
||||
BOOST_TEST( p4 != 0 && *p4 == 4 );
|
||||
BOOST_TEST( p5 != 0 && *p5 == 5 );
|
||||
BOOST_TEST( p6 != 0 && *p6 == 6 );
|
||||
return true;
|
||||
}
|
||||
|
||||
bool f7( boost::shared_ptr<int> p1, boost::shared_ptr<int> p2, boost::shared_ptr<int> p3, boost::shared_ptr<int> p4, boost::shared_ptr<int> p5, boost::shared_ptr<int> p6, boost::shared_ptr<int> p7 )
|
||||
{
|
||||
BOOST_TEST( p1 != 0 && *p1 == 1 );
|
||||
BOOST_TEST( p2 != 0 && *p2 == 2 );
|
||||
BOOST_TEST( p3 != 0 && *p3 == 3 );
|
||||
BOOST_TEST( p4 != 0 && *p4 == 4 );
|
||||
BOOST_TEST( p5 != 0 && *p5 == 5 );
|
||||
BOOST_TEST( p6 != 0 && *p6 == 6 );
|
||||
BOOST_TEST( p7 != 0 && *p7 == 7 );
|
||||
return true;
|
||||
}
|
||||
|
||||
bool f8( boost::shared_ptr<int> p1, boost::shared_ptr<int> p2, boost::shared_ptr<int> p3, boost::shared_ptr<int> p4, boost::shared_ptr<int> p5, boost::shared_ptr<int> p6, boost::shared_ptr<int> p7, boost::shared_ptr<int> p8 )
|
||||
{
|
||||
BOOST_TEST( p1 != 0 && *p1 == 1 );
|
||||
BOOST_TEST( p2 != 0 && *p2 == 2 );
|
||||
BOOST_TEST( p3 != 0 && *p3 == 3 );
|
||||
BOOST_TEST( p4 != 0 && *p4 == 4 );
|
||||
BOOST_TEST( p5 != 0 && *p5 == 5 );
|
||||
BOOST_TEST( p6 != 0 && *p6 == 6 );
|
||||
BOOST_TEST( p7 != 0 && *p7 == 7 );
|
||||
BOOST_TEST( p8 != 0 && *p8 == 8 );
|
||||
return true;
|
||||
}
|
||||
|
||||
bool f9( boost::shared_ptr<int> p1, boost::shared_ptr<int> p2, boost::shared_ptr<int> p3, boost::shared_ptr<int> p4, boost::shared_ptr<int> p5, boost::shared_ptr<int> p6, boost::shared_ptr<int> p7, boost::shared_ptr<int> p8, boost::shared_ptr<int> p9 )
|
||||
{
|
||||
BOOST_TEST( p1 != 0 && *p1 == 1 );
|
||||
BOOST_TEST( p2 != 0 && *p2 == 2 );
|
||||
BOOST_TEST( p3 != 0 && *p3 == 3 );
|
||||
BOOST_TEST( p4 != 0 && *p4 == 4 );
|
||||
BOOST_TEST( p5 != 0 && *p5 == 5 );
|
||||
BOOST_TEST( p6 != 0 && *p6 == 6 );
|
||||
BOOST_TEST( p7 != 0 && *p7 == 7 );
|
||||
BOOST_TEST( p8 != 0 && *p8 == 8 );
|
||||
BOOST_TEST( p9 != 0 && *p9 == 9 );
|
||||
return true;
|
||||
}
|
||||
|
||||
void test()
|
||||
{
|
||||
{
|
||||
boost::function<bool(boost::shared_ptr<int>)> f( f1 );
|
||||
|
||||
( boost::bind( f, _1 ) && boost::bind( f1, _1 ) )( boost::make_shared<int>( 1 ) );
|
||||
}
|
||||
|
||||
{
|
||||
boost::function<bool(boost::shared_ptr<int>, boost::shared_ptr<int>)> f( f2 );
|
||||
|
||||
( boost::bind( f, _1, _2 ) && boost::bind( f2, _1, _2 ) )( boost::make_shared<int>( 1 ), boost::make_shared<int>( 2 ) );
|
||||
}
|
||||
|
||||
{
|
||||
boost::function<bool(boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>)> f( f3 );
|
||||
|
||||
( boost::bind( f, _1, _2, _3 ) && boost::bind( f3, _1, _2, _3 ) )( boost::make_shared<int>( 1 ), boost::make_shared<int>( 2 ), boost::make_shared<int>( 3 ) );
|
||||
}
|
||||
|
||||
{
|
||||
boost::function<bool(boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>)> f( f3 );
|
||||
|
||||
( boost::bind( f, _1, _2, _3 ) && boost::bind( f3, _1, _2, _3 ) )( boost::make_shared<int>( 1 ), boost::make_shared<int>( 2 ), boost::make_shared<int>( 3 ) );
|
||||
}
|
||||
|
||||
{
|
||||
boost::function<bool(boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>)> f( f4 );
|
||||
|
||||
( boost::bind( f, _1, _2, _3, _4 ) && boost::bind( f4, _1, _2, _3, _4 ) )( boost::make_shared<int>( 1 ), boost::make_shared<int>( 2 ), boost::make_shared<int>( 3 ), boost::make_shared<int>( 4 ) );
|
||||
}
|
||||
|
||||
{
|
||||
boost::function<bool(boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>)> f( f5 );
|
||||
|
||||
( boost::bind( f, _1, _2, _3, _4, _5 ) && boost::bind( f5, _1, _2, _3, _4, _5 ) )( boost::make_shared<int>( 1 ), boost::make_shared<int>( 2 ), boost::make_shared<int>( 3 ), boost::make_shared<int>( 4 ), boost::make_shared<int>( 5 ) );
|
||||
}
|
||||
|
||||
{
|
||||
boost::function<bool(boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>)> f( f6 );
|
||||
|
||||
( boost::bind( f, _1, _2, _3, _4, _5, _6 ) && boost::bind( f6, _1, _2, _3, _4, _5, _6 ) )( boost::make_shared<int>( 1 ), boost::make_shared<int>( 2 ), boost::make_shared<int>( 3 ), boost::make_shared<int>( 4 ), boost::make_shared<int>( 5 ), boost::make_shared<int>( 6 ) );
|
||||
}
|
||||
|
||||
{
|
||||
boost::function<bool(boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>)> f( f7 );
|
||||
|
||||
( boost::bind( f, _1, _2, _3, _4, _5, _6, _7 ) && boost::bind( f7, _1, _2, _3, _4, _5, _6, _7 ) )( boost::make_shared<int>( 1 ), boost::make_shared<int>( 2 ), boost::make_shared<int>( 3 ), boost::make_shared<int>( 4 ), boost::make_shared<int>( 5 ), boost::make_shared<int>( 6 ), boost::make_shared<int>( 7 ) );
|
||||
}
|
||||
|
||||
{
|
||||
boost::function<bool(boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>)> f( f8 );
|
||||
|
||||
( boost::bind( f, _1, _2, _3, _4, _5, _6, _7, _8 ) && boost::bind( f8, _1, _2, _3, _4, _5, _6, _7, _8 ) )( boost::make_shared<int>( 1 ), boost::make_shared<int>( 2 ), boost::make_shared<int>( 3 ), boost::make_shared<int>( 4 ), boost::make_shared<int>( 5 ), boost::make_shared<int>( 6 ), boost::make_shared<int>( 7 ), boost::make_shared<int>( 8 ) );
|
||||
}
|
||||
|
||||
{
|
||||
boost::function<bool(boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>, boost::shared_ptr<int>)> f( f9 );
|
||||
|
||||
( boost::bind( f, _1, _2, _3, _4, _5, _6, _7, _8, _9 ) && boost::bind( f9, _1, _2, _3, _4, _5, _6, _7, _8, _9 ) )( boost::make_shared<int>( 1 ), boost::make_shared<int>( 2 ), boost::make_shared<int>( 3 ), boost::make_shared<int>( 4 ), boost::make_shared<int>( 5 ), boost::make_shared<int>( 6 ), boost::make_shared<int>( 7 ), boost::make_shared<int>( 8 ), boost::make_shared<int>( 9 ) );
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
test();
|
||||
return boost::report_errors();
|
||||
}
|
||||
46
test/placeholder_std_bind_test.cpp
Normal file
46
test/placeholder_std_bind_test.cpp
Normal file
@@ -0,0 +1,46 @@
|
||||
//
|
||||
// placeholder_std_bind_test.cpp - std::bind with Boost's _1
|
||||
//
|
||||
// Copyright 2016 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
|
||||
//
|
||||
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#if defined( BOOST_NO_CXX11_HDR_FUNCTIONAL )
|
||||
|
||||
int main()
|
||||
{
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
#include <boost/core/lightweight_test.hpp>
|
||||
#include <functional>
|
||||
|
||||
namespace std
|
||||
{
|
||||
|
||||
template<int N> struct is_placeholder< boost::arg<N> >: public integral_constant<int, N> {};
|
||||
|
||||
} // namespace std
|
||||
|
||||
int foo( int i )
|
||||
{
|
||||
return i;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
BOOST_TEST_EQ( std::bind( foo, _1 )( 1 ), 1 );
|
||||
BOOST_TEST_EQ( std::bind( foo, _2 )( 1, 2 ), 2 );
|
||||
BOOST_TEST_EQ( std::bind( foo, _3 )( 1, 2, 3 ), 3 );
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user