diff --git a/include/boost/move/algo/adaptive_merge.hpp b/include/boost/move/algo/adaptive_merge.hpp index e7b0907..eedfef2 100644 --- a/include/boost/move/algo/adaptive_merge.hpp +++ b/include/boost/move/algo/adaptive_merge.hpp @@ -13,14 +13,13 @@ #define BOOST_MOVE_ADAPTIVE_MERGE_HPP #include +#include -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsign-conversion" #endif -#include - namespace boost { namespace movelib { @@ -355,7 +354,7 @@ void adaptive_merge( RandIt first, RandIt middle, RandIt last, Compare comp } //namespace movelib { } //namespace boost { -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) #pragma GCC diagnostic pop #endif diff --git a/include/boost/move/algo/adaptive_sort.hpp b/include/boost/move/algo/adaptive_sort.hpp index a9f7bd4..48403bb 100644 --- a/include/boost/move/algo/adaptive_sort.hpp +++ b/include/boost/move/algo/adaptive_sort.hpp @@ -14,14 +14,14 @@ #include -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) +#include +#include + +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wsign-conversion" #endif -#include -#include - namespace boost { namespace movelib { @@ -647,7 +647,7 @@ void adaptive_sort( RandIt first, RandIt last, Compare comp) #include -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) #pragma GCC diagnostic pop #endif diff --git a/include/boost/move/algo/detail/adaptive_sort_merge.hpp b/include/boost/move/algo/detail/adaptive_sort_merge.hpp index 4af5c9b..5c12fcf 100644 --- a/include/boost/move/algo/detail/adaptive_sort_merge.hpp +++ b/include/boost/move/algo/detail/adaptive_sort_merge.hpp @@ -44,11 +44,6 @@ #include -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsign-conversion" -#endif - #include #include #include @@ -63,6 +58,11 @@ #include #include +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#endif + #ifndef BOOST_MOVE_ADAPTIVE_SORT_STATS_LEVEL #define BOOST_MOVE_ADAPTIVE_SORT_STATS_LEVEL 1 #endif @@ -1527,7 +1527,7 @@ typename iterator_traits::size_type } //namespace movelib { } //namespace boost { -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) #pragma GCC diagnostic pop #endif diff --git a/include/boost/move/algo/detail/heap_sort.hpp b/include/boost/move/algo/detail/heap_sort.hpp index b1a42a2..ec3e7c2 100644 --- a/include/boost/move/algo/detail/heap_sort.hpp +++ b/include/boost/move/algo/detail/heap_sort.hpp @@ -24,16 +24,16 @@ #include -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsign-conversion" -#endif - #include #include #include #include +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#endif + namespace boost { namespace movelib{ template @@ -112,7 +112,7 @@ BOOST_MOVE_FORCEINLINE void heap_sort(RandomAccessIterator first, RandomAccessIt }} //namespace boost { namespace movelib{ -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) #pragma GCC diagnostic pop #endif diff --git a/include/boost/move/algo/detail/insertion_sort.hpp b/include/boost/move/algo/detail/insertion_sort.hpp index 4181e27..77f0b69 100644 --- a/include/boost/move/algo/detail/insertion_sort.hpp +++ b/include/boost/move/algo/detail/insertion_sort.hpp @@ -22,11 +22,6 @@ # pragma once #endif -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsign-conversion" -#endif - #include #include #include @@ -38,6 +33,11 @@ #include #include +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#endif + namespace boost { namespace movelib{ // @cond @@ -130,7 +130,7 @@ void insertion_sort_uninitialized_copy }} //namespace boost { namespace movelib{ -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) #pragma GCC diagnostic pop #endif diff --git a/include/boost/move/algo/detail/merge.hpp b/include/boost/move/algo/detail/merge.hpp index a1c3474..6520655 100644 --- a/include/boost/move/algo/detail/merge.hpp +++ b/include/boost/move/algo/detail/merge.hpp @@ -11,11 +11,6 @@ #ifndef BOOST_MOVE_MERGE_HPP #define BOOST_MOVE_MERGE_HPP -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsign-conversion" -#endif - #include #include #include @@ -27,6 +22,11 @@ #include #include +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#endif + namespace boost { namespace movelib { @@ -941,7 +941,7 @@ void merge_adaptive_ONlogN(BidirectionalIterator first, } //namespace movelib { } //namespace boost { -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) #pragma GCC diagnostic pop #endif diff --git a/include/boost/move/algo/detail/merge_sort.hpp b/include/boost/move/algo/detail/merge_sort.hpp index b8d8330..85d0a43 100644 --- a/include/boost/move/algo/detail/merge_sort.hpp +++ b/include/boost/move/algo/detail/merge_sort.hpp @@ -23,13 +23,6 @@ #endif #include - -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsign-conversion" -#endif - - #include #include @@ -41,6 +34,11 @@ #include #include +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#endif + namespace boost { namespace movelib { @@ -209,7 +207,7 @@ void stable_sort_adaptive_ONlogN2(BidirectionalIterator first, }} //namespace boost { namespace movelib{ -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) #pragma GCC diagnostic pop #endif diff --git a/include/boost/move/algo/detail/pdqsort.hpp b/include/boost/move/algo/detail/pdqsort.hpp index 3287783..5ff708b 100644 --- a/include/boost/move/algo/detail/pdqsort.hpp +++ b/include/boost/move/algo/detail/pdqsort.hpp @@ -48,11 +48,6 @@ #include -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsign-conversion" -#endif - #include #include #include @@ -62,6 +57,11 @@ #include #include +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#endif + namespace boost { namespace movelib { @@ -335,7 +335,7 @@ void pdqsort(Iter begin, Iter end, Compare comp) } //namespace movelib { } //namespace boost { -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) #pragma GCC diagnostic pop #endif diff --git a/include/boost/move/algo/detail/set_difference.hpp b/include/boost/move/algo/detail/set_difference.hpp index fd46576..812ca5f 100644 --- a/include/boost/move/algo/detail/set_difference.hpp +++ b/include/boost/move/algo/detail/set_difference.hpp @@ -11,17 +11,16 @@ #ifndef BOOST_MOVE_SET_DIFFERENCE_HPP #define BOOST_MOVE_SET_DIFFERENCE_HPP -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsign-conversion" -#endif - #include #include #include -namespace boost { +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#endif +namespace boost { namespace move_detail{ template @@ -204,7 +203,7 @@ ForwardOutputIt1 inplace_set_unique_difference return first1; } -#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) +#if defined(BOOST_CLANG) || (defined(BOOST_GCC) && (BOOST_GCC >= 40600)) #pragma GCC diagnostic pop #endif diff --git a/include/boost/move/detail/nsec_clock.hpp b/include/boost/move/detail/nsec_clock.hpp index 1d6bb41..e43cca4 100644 --- a/include/boost/move/detail/nsec_clock.hpp +++ b/include/boost/move/detail/nsec_clock.hpp @@ -121,9 +121,9 @@ inline boost::uint64_t nsec_clock() BOOST_NOEXCEPT { struct timespec count; ::clock_gettime(BOOST_MOVE_DETAIL_CLOCK_MONOTONIC, &count); - boost::uint64_t r = count.tv_sec; + boost::uint64_t r = static_cast(count.tv_sec); r *= 1000000000U; - r += count.tv_nsec; + r += static_cast(count.tv_nsec); return r; } diff --git a/test/bench_merge.cpp b/test/bench_merge.cpp index c811955..e5167bb 100644 --- a/test/bench_merge.cpp +++ b/test/bench_merge.cpp @@ -174,7 +174,7 @@ bool measure_algo(T *elements, std::size_t element_count, std::size_t split_pos, nanosecond_type new_clock = timer.elapsed().wall; //std::cout << "Cmp:" << order_perf_type::num_compare << " Cpy:" << order_perf_type::num_copy; //for old compilers without ll size argument - std::printf("Cmp:%8.04f Cpy:%9.04f", double(order_perf_type::num_compare)/element_count, double(order_perf_type::num_copy)/element_count ); + std::printf("Cmp:%8.04f Cpy:%9.04f", double(order_perf_type::num_compare)/double(element_count), double(order_perf_type::num_copy)/double(element_count) ); double time = double(new_clock); diff --git a/test/bench_sort.cpp b/test/bench_sort.cpp index 4c90cd2..d238043 100644 --- a/test/bench_sort.cpp +++ b/test/bench_sort.cpp @@ -206,7 +206,7 @@ bool measure_algo(T *elements, std::size_t element_count, std::size_t alg, nanos nanosecond_type new_clock = timer.elapsed().wall; //std::cout << "Cmp:" << order_perf_type::num_compare << " Cpy:" << order_perf_type::num_copy; //for old compilers without ll size argument - std::printf("Cmp:%7.03f Cpy:%8.03f", double(order_perf_type::num_compare)/element_count, double(order_perf_type::num_copy)/element_count ); + std::printf("Cmp:%7.03f Cpy:%8.03f", double(order_perf_type::num_compare)/double(element_count), double(order_perf_type::num_copy)/double(element_count) ); double time = double(new_clock); diff --git a/test/unique_ptr_test_utils_beg.hpp b/test/unique_ptr_test_utils_beg.hpp index 965732c..2563bf3 100644 --- a/test/unique_ptr_test_utils_beg.hpp +++ b/test/unique_ptr_test_utils_beg.hpp @@ -15,6 +15,7 @@ #include #include #include +#include ////////////////////////////////////////////// // @@ -188,7 +189,7 @@ BOOST_STATIC_ASSERT((::boost::move_upmu::is_convertible::value)); struct I; void check(int i); I* get(); -I* get_array(int i); +I* get_array(std::size_t i); #include diff --git a/test/unique_ptr_test_utils_end.hpp b/test/unique_ptr_test_utils_end.hpp index ca0fb92..f73d789 100644 --- a/test/unique_ptr_test_utils_end.hpp +++ b/test/unique_ptr_test_utils_end.hpp @@ -30,7 +30,7 @@ struct I int I::count = 0; I* get() {return new I;} -I* get_array(int i) {return new I[i];} +I* get_array(std::size_t i) {return new I[i];} void check(int i) {