Compare commits

...

4 Commits

Author SHA1 Message Date
Peter Dimov
b91cb90dca Make min/max engine members constexpr in random_shuffle.hpp 2018-09-24 02:26:50 +03:00
Peter Dimov
7efe3c68f6 Fix msvc-10.0, msvc-11.0 failures in ref_unwrapped tests 2018-09-24 02:21:55 +03:00
Peter Dimov
357bf3b980 Merge pull request #75 from morinmorin/add_adl_barrier_to_distance
Add ADL guard namespace for boost::distance(rng)
2018-09-23 20:08:55 +03:00
morinmorin
9192996a93 Add ADL guard namespace for boost::distance(rng). 2018-09-23 21:45:30 +09:00
4 changed files with 19 additions and 14 deletions

View File

@@ -32,7 +32,7 @@ namespace boost
typedef BOOST_DEDUCED_TYPENAME
range_reference<SinglePassRange>::type argument_type;
using result_type = decltype(std::declval<argument_type>().get() );
typedef decltype(std::declval<argument_type>().get() ) result_type;
result_type operator()( argument_type &&r ) const
{
@@ -46,11 +46,11 @@ namespace boost
: public transformed_range<unwrap_ref<SinglePassRange>,
SinglePassRange>
{
using base = transformed_range<unwrap_ref<SinglePassRange>,
SinglePassRange>;
typedef transformed_range<unwrap_ref<SinglePassRange>,
SinglePassRange> base;
public:
using transform_fn_type = unwrap_ref<SinglePassRange>;
using source_range_type = SinglePassRange;
typedef unwrap_ref<SinglePassRange> transform_fn_type;
typedef SinglePassRange source_range_type;
unwrap_ref_range(transform_fn_type fn, source_range_type &rng)
: base(fn, rng)

View File

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

View File

@@ -23,13 +23,18 @@
namespace boost
{
template< class T >
inline BOOST_CXX14_CONSTEXPR BOOST_DEDUCED_TYPENAME range_difference<T>::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<T>::type
distance( const T& r )
{
return boost::iterators::distance( boost::begin( r ), boost::end( r ) );
}
}
using namespace range_distance_adl_barrier;
} // namespace 'boost'
#endif

View File

@@ -17,7 +17,7 @@
#include <vector>
#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
{