From 9823a4135bad7ccd935cea4918c95b876a27dae2 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sat, 21 May 2016 23:37:42 +0300 Subject: [PATCH 1/4] Do not fetch tools/inspect in .yml files --- .travis.yml | 1 - appveyor.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index a409e36..ee2b3ad 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,7 +25,6 @@ install: - git submodule init libs/static_assert - git submodule init libs/type_traits - git submodule init tools/build - - git submodule init tools/inspect - git submodule update - cd libs/core - git checkout -q $TRAVIS_COMMIT diff --git a/appveyor.yml b/appveyor.yml index d9d2ca5..03c3982 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -21,7 +21,6 @@ install: - git submodule init libs/static_assert - git submodule init libs/type_traits - git submodule init tools/build - - git submodule init tools/inspect - git submodule update - cd libs\core - git checkout -q %APPVEYOR_REPO_COMMIT% From d7324129246e8a0d501d375d1b74c4cd9bb9355f Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Mon, 11 Jul 2016 16:34:02 +0300 Subject: [PATCH 2/4] Added a workaround for Oracle compiler with STLport when the first argument to distance() is an array and the second one is a pointer (presumably, pointing into the array). --- include/boost/detail/iterator.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/boost/detail/iterator.hpp b/include/boost/detail/iterator.hpp index c2e8f1e..ad75e6a 100644 --- a/include/boost/detail/iterator.hpp +++ b/include/boost/detail/iterator.hpp @@ -9,6 +9,9 @@ // This header is obsolete and will be deprecated. #include +#if defined(__SUNPRO_CC) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) +#include +#endif namespace boost { @@ -19,6 +22,16 @@ namespace detail using std::iterator_traits; using std::distance; +#if defined(__SUNPRO_CC) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) +// std::distance from stlport with Oracle compiler 12.4 and 12.5 fails to deduce template parameters +// when one of the arguments is an array and the other one is a pointer. +template< typename T, std::size_t N, typename U > +inline typename std::iterator_traits< T* >::difference_type distance(T (&left)[N], U* right) +{ + return std::distance(static_cast< T* >(left), right); +} +#endif + } // namespace detail } // namespace boost From b0b16d6ddb03e90172f63751e32655499ab06ee6 Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Mon, 11 Jul 2016 17:08:28 +0300 Subject: [PATCH 3/4] Attempt to re-enable Boost.Core.Swap tests. --- test/Jamfile.v2 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index ba8a83a..f40577d 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -6,6 +6,7 @@ # See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt +import modules ; import testing ; run addressof_test.cpp ; @@ -92,3 +93,6 @@ compile-fail scoped_enum_compile_fail_conv_from_int.cpp ; compile-fail scoped_enum_compile_fail_conv_to_int.cpp ; run underlying_type.cpp ; + +use-project /boost/core/swap : ./swap ; +build-project ./swap ; From 2128428ca1aebcd06d74911b4e67ececc3736069 Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Tue, 12 Jul 2016 13:52:05 +0300 Subject: [PATCH 4/4] Made the workaround for Oracle compiler more strict. --- include/boost/detail/iterator.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/detail/iterator.hpp b/include/boost/detail/iterator.hpp index ad75e6a..2498ef4 100644 --- a/include/boost/detail/iterator.hpp +++ b/include/boost/detail/iterator.hpp @@ -25,8 +25,8 @@ using std::distance; #if defined(__SUNPRO_CC) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) // std::distance from stlport with Oracle compiler 12.4 and 12.5 fails to deduce template parameters // when one of the arguments is an array and the other one is a pointer. -template< typename T, std::size_t N, typename U > -inline typename std::iterator_traits< T* >::difference_type distance(T (&left)[N], U* right) +template< typename T, std::size_t N > +inline typename std::iterator_traits< T* >::difference_type distance(T (&left)[N], T* right) { return std::distance(static_cast< T* >(left), right); }