mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-11-03 21:49:32 +01:00 
			
		
		
		
	Fixed compile error under VS2015 /c++:latest, caused by using random_shuffle
Now if we detect C++11 compiler, or MSVC in version corresponding to VS2015, we switch from using `std::random_shuffle` to `std::shuffle`. `std::random_shuffle` was officially deprecated in C++14, and removed in C++17. Also removed guarded inclusion of `<random>` header, as there was nothing in the header that used it.
This commit is contained in:
		@@ -115,6 +115,7 @@
 | 
			
		||||
#if (_MSC_VER >= 1900 ) // (VC++ 13 (VS2015))
 | 
			
		||||
#define CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT
 | 
			
		||||
#define CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS
 | 
			
		||||
#define CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // _MSC_VER
 | 
			
		||||
@@ -180,7 +181,9 @@
 | 
			
		||||
#  if !defined(CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR)
 | 
			
		||||
#    define CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
# if !defined(CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE)
 | 
			
		||||
#   define CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#endif // __cplusplus >= 201103L
 | 
			
		||||
 | 
			
		||||
@@ -215,6 +218,9 @@
 | 
			
		||||
#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER)
 | 
			
		||||
#   define CATCH_CONFIG_COUNTER
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE) && !defined(CATCH_CONFIG_NO_SHUFFLE) && !defined(CATCH_CONFIG_CPP11_SHUFFLE) && !defined(CATCH_CONFIG_NO_CPP11)
 | 
			
		||||
#   define CATCH_CONFIG_CPP11_SHUFFLE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS)
 | 
			
		||||
#   define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS
 | 
			
		||||
 
 | 
			
		||||
@@ -19,9 +19,6 @@
 | 
			
		||||
#include <iostream>
 | 
			
		||||
#include <algorithm>
 | 
			
		||||
 | 
			
		||||
#ifdef CATCH_CPP14_OR_GREATER
 | 
			
		||||
#include <random>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
namespace Catch {
 | 
			
		||||
 | 
			
		||||
@@ -30,7 +27,7 @@ namespace Catch {
 | 
			
		||||
 | 
			
		||||
        result_type operator()( result_type n ) const { return std::rand() % n; }
 | 
			
		||||
 | 
			
		||||
#ifdef CATCH_CPP14_OR_GREATER
 | 
			
		||||
#ifdef CATCH_CONFIG_CPP11_SHUFFLE
 | 
			
		||||
        static constexpr result_type min() { return 0; }
 | 
			
		||||
        static constexpr result_type max() { return 1000000; }
 | 
			
		||||
        result_type operator()() const { return std::rand() % max(); }
 | 
			
		||||
@@ -38,7 +35,7 @@ namespace Catch {
 | 
			
		||||
        template<typename V>
 | 
			
		||||
        static void shuffle( V& vector ) {
 | 
			
		||||
            RandomNumberGenerator rng;
 | 
			
		||||
#ifdef CATCH_CPP14_OR_GREATER
 | 
			
		||||
#ifdef CATCH_CONFIG_CPP11_SHUFFLE
 | 
			
		||||
            std::shuffle( vector.begin(), vector.end(), rng );
 | 
			
		||||
#else
 | 
			
		||||
            std::random_shuffle( vector.begin(), vector.end(), rng );
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user