Compare commits

...

17 Commits

Author SHA1 Message Date
Peter Dimov
5856dd356b Merge branch 'develop' 2017-02-16 15:22:58 +02:00
Peter Dimov
ce4df8a666 Add ubuntu-toolchain-r-test to clang apt sources 2017-02-07 01:29:04 +02:00
Peter Dimov
ecc0e72841 Add llvm-toolchain-precise to clang apt sources 2017-02-07 01:03:59 +02:00
Peter Dimov
b51caf1934 Move apt sources into the matrix 2017-02-06 22:17:50 +02:00
Peter Dimov
2a29af7e4f Only install necessary packages in .travis.yml to speed it up 2017-02-06 21:57:46 +02:00
Peter Dimov
2e23da9630 Add platform matrix to .travis.yml 2017-02-06 19:01:42 +02:00
Peter Dimov
6587f1f05d Merge branch 'develop' 2017-01-01 04:13:17 +02:00
Peter Dimov
60d3e0f4f3 Remove use of std::auto_ptr, it has been removed in C++17 2016-11-06 15:03:25 +02:00
Rene Rivera
b4ff3ca541 Add, and update, documentation build targets. 2016-10-10 11:39:47 -05:00
Rene Rivera
209bda011d Add, and update, documentation build targets. 2016-10-07 23:07:32 -05:00
Peter Dimov
1340966709 Merge branch 'develop' 2016-09-30 16:00:20 +03:00
Peter Dimov
c61026bb81 Simplify _arg_eq, avoid partial specialization. 2016-09-10 13:42:05 +03:00
Peter Dimov
473155eebe Update .travis.yml to not checkout as well. 2016-09-10 13:21:11 +03:00
Peter Dimov
a1f6206a49 Do not checkout libs/bind, copy, because of pull requests. 2016-09-10 13:04:05 +03:00
Peter Dimov
03a25d41da Enable Travis notifications on success 2016-08-28 23:17:16 +03:00
Peter Dimov
808996b70f Replace msvc-12.0 with msvc-14.0 in Appveyor, as 12.0 doesn't seem to work 2016-08-20 02:00:14 +03:00
Peter Dimov
3c56630b54 SFINAE out the converting constructor of arg<I> to avoid hard errors with is_convertible on g++ 4.8/4.9 2016-08-20 01:32:42 +03:00
9 changed files with 368 additions and 18 deletions

View File

@@ -15,10 +15,235 @@ branches:
- 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:
- git clone -b $TRAVIS_BRANCH https://github.com/boostorg/boost.git boost
- cd boost
- git submodule init libs/bind
- 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
@@ -37,13 +262,15 @@ install:
- git submodule init tools/build
- git submodule init tools/inspect
- git submodule update
- cd libs/bind
- git checkout -q $TRAVIS_COMMIT
- cd ../..
- cp -r $TRAVIS_BUILD_DIR/* libs/bind
- ./bootstrap.sh
- ./b2 headers
script:
- TOOLSET=gcc,clang
- if [ $TRAVIS_OS_NAME == osx ]; then TOOLSET=clang; fi
- |-
echo "using $TOOLSET : : $COMPILER : <cxxflags>-std=$CXXSTD ;" > ~/user-config.jam
- ./b2 libs/bind/test toolset=$TOOLSET
notifications:
email:
on_success: always

View File

@@ -12,9 +12,9 @@ branches:
- develop
install:
- git clone -b %APPVEYOR_REPO_BRANCH% https://github.com/boostorg/boost.git boost
- cd boost
- git submodule init libs/bind
- 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
@@ -33,13 +33,11 @@ install:
- git submodule init tools/build
- git submodule init tools/inspect
- git submodule update
- cd libs\bind
- git checkout -q %APPVEYOR_REPO_COMMIT%
- cd ..\..
- 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-12.0
- b2 libs/bind/test toolset=msvc-9.0,msvc-10.0,msvc-11.0,msvc-14.0

View File

@@ -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 ;

View File

@@ -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 );
}
};

View File

@@ -56,4 +56,7 @@ test-suite "bind"
[ 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
View 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
View 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;
}

View File

@@ -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 )

View 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