diff --git a/.travis.yml b/.travis.yml index 314afb9..dcfdd49 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,6 +28,26 @@ matrix: compiler: g++ env: TOOLSET=gcc CXXSTD=03,11 + - os: linux + compiler: g++-4.4 + env: TOOLSET=gcc-4.4 CXXSTD=98,0x + addons: + apt: + packages: + - g++-4.4 + sources: + - ubuntu-toolchain-r-test + + - os: linux + compiler: g++-4.6 + env: TOOLSET=gcc-4.6 CXXSTD=03,0x + addons: + apt: + packages: + - g++-4.6 + sources: + - ubuntu-toolchain-r-test + - os: linux compiler: g++-5 env: TOOLSET=gcc-5 CXXSTD=03,11 diff --git a/include/boost/range/adaptor/ref_unwrapped.hpp b/include/boost/range/adaptor/ref_unwrapped.hpp index 71af483..7ac5115 100644 --- a/include/boost/range/adaptor/ref_unwrapped.hpp +++ b/include/boost/range/adaptor/ref_unwrapped.hpp @@ -15,7 +15,7 @@ #include #include #include - +#include #include #if !defined(BOOST_NO_CXX11_DECLTYPE) @@ -32,7 +32,7 @@ namespace boost typedef BOOST_DEDUCED_TYPENAME range_reference::type argument_type; - using result_type = decltype(std::declval().get() ); + typedef decltype( boost::declval().get() ) result_type; result_type operator()( argument_type &&r ) const { @@ -46,11 +46,11 @@ namespace boost : public transformed_range, SinglePassRange> { - using base = transformed_range, - SinglePassRange>; + typedef transformed_range, + SinglePassRange> base; public: - using transform_fn_type = unwrap_ref; - using source_range_type = SinglePassRange; + typedef unwrap_ref transform_fn_type; + typedef SinglePassRange source_range_type; unwrap_ref_range(transform_fn_type fn, source_range_type &rng) : base(fn, rng) diff --git a/include/boost/range/algorithm/random_shuffle.hpp b/include/boost/range/algorithm/random_shuffle.hpp index 2475173..33e98e0 100644 --- a/include/boost/range/algorithm/random_shuffle.hpp +++ b/include/boost/range/algorithm/random_shuffle.hpp @@ -32,12 +32,12 @@ struct wrap_rand { typedef unsigned int result_type; - static result_type (min)() + static BOOST_CONSTEXPR result_type (min)() { return 0; } - static result_type (max)() + static BOOST_CONSTEXPR result_type (max)() { return RAND_MAX; } @@ -64,12 +64,12 @@ struct wrap_generator wrap_generator(Generator& gen) : g(gen) {} - static result_type (min)() + static BOOST_CONSTEXPR result_type (min)() { return 0; } - static result_type (max)() + static BOOST_CONSTEXPR result_type (max)() { return max_arg - 1; } diff --git a/include/boost/range/begin.hpp b/include/boost/range/begin.hpp index 0d7d3db..4f53d46 100644 --- a/include/boost/range/begin.hpp +++ b/include/boost/range/begin.hpp @@ -22,6 +22,8 @@ #else #include +#include +#include namespace boost { @@ -94,7 +96,10 @@ namespace range_adl_barrier { template< class T > -BOOST_CONSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator::type begin( T& r ) +#if !BOOST_WORKAROUND(BOOST_GCC, < 40700) +BOOST_CONSTEXPR +#endif +inline BOOST_DEDUCED_TYPENAME range_iterator::type begin( T& r ) { #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) using namespace range_detail; @@ -103,7 +108,10 @@ BOOST_CONSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator::type begin( T& } template< class T > -BOOST_CONSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator::type begin( const T& r ) +#if !BOOST_WORKAROUND(BOOST_GCC, < 40700) +BOOST_CONSTEXPR +#endif +inline BOOST_DEDUCED_TYPENAME range_iterator::type begin( const T& r ) { #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) using namespace range_detail; diff --git a/include/boost/range/distance.hpp b/include/boost/range/distance.hpp index 8dcf05b..5b82cf0 100644 --- a/include/boost/range/distance.hpp +++ b/include/boost/range/distance.hpp @@ -23,13 +23,18 @@ namespace boost { - template< class T > - inline BOOST_CXX14_CONSTEXPR BOOST_DEDUCED_TYPENAME range_difference::type - distance( const T& r ) + namespace range_distance_adl_barrier { - return boost::distance( boost::begin( r ), boost::end( r ) ); + template< class T > + inline BOOST_CXX14_CONSTEXPR BOOST_DEDUCED_TYPENAME range_difference::type + distance( const T& r ) + { + return boost::iterators::distance( boost::begin( r ), boost::end( r ) ); + } } + using namespace range_distance_adl_barrier; + } // namespace 'boost' #endif diff --git a/include/boost/range/end.hpp b/include/boost/range/end.hpp index 588495c..eab4fa9 100644 --- a/include/boost/range/end.hpp +++ b/include/boost/range/end.hpp @@ -24,6 +24,8 @@ #include #include #include +#include +#include namespace boost { @@ -88,7 +90,10 @@ namespace range_adl_barrier { template< class T > -BOOST_CONSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator::type end( T& r ) +#if !BOOST_WORKAROUND(BOOST_GCC, < 40700) +BOOST_CONSTEXPR +#endif +inline BOOST_DEDUCED_TYPENAME range_iterator::type end( T& r ) { #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) using namespace range_detail; @@ -97,7 +102,10 @@ BOOST_CONSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator::type end( T& r } template< class T > -BOOST_CONSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator::type end( const T& r ) +#if !BOOST_WORKAROUND(BOOST_GCC, < 40700) +BOOST_CONSTEXPR +#endif +inline BOOST_DEDUCED_TYPENAME range_iterator::type end( const T& r ) { #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) using namespace range_detail; diff --git a/test/adaptor_test/ref_unwrapped.cpp b/test/adaptor_test/ref_unwrapped.cpp index ea190b3..c476b74 100644 --- a/test/adaptor_test/ref_unwrapped.cpp +++ b/test/adaptor_test/ref_unwrapped.cpp @@ -17,7 +17,7 @@ #include -#if !defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) && !defined(BOOST_NO_CXX11_RANGE_BASED_FOR) +#if !defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) && !defined(BOOST_NO_CXX11_RANGE_BASED_FOR) && !defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) namespace boost {