mirror of
				https://github.com/boostorg/unordered.git
				synced 2025-11-04 01:31:41 +01:00 
			
		
		
		
	Some compilers don't like the use of sizeof with a static template member
array, so I'm hardcoding the prime number list length. Pity. [SVN r45620]
This commit is contained in:
		@@ -81,6 +81,7 @@ namespace boost {
 | 
			
		||||
        template<typename T> struct prime_list_template
 | 
			
		||||
        {
 | 
			
		||||
            static std::size_t const value[];
 | 
			
		||||
            static std::ptrdiff_t const length;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        template<typename T>
 | 
			
		||||
@@ -92,13 +93,16 @@ namespace boost {
 | 
			
		||||
            50331653ul, 100663319ul, 201326611ul, 402653189ul, 805306457ul,
 | 
			
		||||
            1610612741ul, 3221225473ul, 4294967291ul };
 | 
			
		||||
 | 
			
		||||
        template<typename T>
 | 
			
		||||
        std::ptrdiff_t const prime_list_template<T>::length = 28;
 | 
			
		||||
 | 
			
		||||
        typedef prime_list_template<std::size_t> prime_list;
 | 
			
		||||
 | 
			
		||||
        // no throw
 | 
			
		||||
        inline std::size_t next_prime(std::size_t n) {
 | 
			
		||||
            std::size_t const* const prime_list_begin = prime_list::value;
 | 
			
		||||
            std::size_t const* const prime_list_end = prime_list_begin +
 | 
			
		||||
                sizeof(prime_list::value) / sizeof(*prime_list::value);
 | 
			
		||||
                prime_list::length;
 | 
			
		||||
            std::size_t const* bound =
 | 
			
		||||
                std::lower_bound(prime_list_begin, prime_list_end, n);
 | 
			
		||||
            if(bound == prime_list_end)
 | 
			
		||||
@@ -110,7 +114,7 @@ namespace boost {
 | 
			
		||||
        inline std::size_t prev_prime(std::size_t n) {
 | 
			
		||||
            std::size_t const* const prime_list_begin = prime_list::value;
 | 
			
		||||
            std::size_t const* const prime_list_end = prime_list_begin +
 | 
			
		||||
                sizeof(prime_list::value) / sizeof(*prime_list::value);
 | 
			
		||||
                prime_list::length;
 | 
			
		||||
            std::size_t const* bound =
 | 
			
		||||
                std::upper_bound(prime_list_begin,prime_list_end, n);
 | 
			
		||||
            if(bound != prime_list_begin)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user