commit | ba82ceaa40185eea18365a3f7b98c61a4480b9c6 | [log] [tgz] |
---|---|---|
author | Ruslan Arutyunyan <ruslan.arutyunyan@intel.com> | Mon Jan 31 21:40:16 2022 +0300 |
committer | Copybara-Service <copybara-worker@google.com> | Mon Jan 31 11:31:17 2022 -0800 |
tree | e2bf7e6d645dc3aa0c45d0a12a81e5f5ee33672e | |
parent | 696a6e906e055d3b3de7f2861ee0cc48c2f98e07 [diff] |
[libc++][pstl][NFC] Remove usage of std::result_of from Parallel STL std::result_of creates problems when building with C++20 because it's deprecated there. The solution is to remove it and get return value type for a function with decltype. Substitute std::invoke_result for std::result_of is unnecessary because we don't have std::invoke semantics within the function - we don't work with pointer-to-member's. Reviewed by: ldionne, MikeDvorskiy, #libc Differential Revision: https://reviews.llvm.org/D118457 GitOrigin-RevId: d01d91d1aec9cca8dc7259009a6b3db0900e8623
Parallel STL is an implementation of the C++ standard library algorithms with support for execution policies, as specified in ISO/IEC 14882:2017 standard, commonly called C++17. The implementation also supports the unsequenced execution policy specified in Parallelism TS version 2 and proposed for the next version of the C++ standard in the C++ working group paper P1001. Parallel STL offers efficient support for both parallel and vectorized execution of algorithms. For sequential execution, it relies on an available implementation of the C++ standard library.
To use Parallel STL, you must have the following software installed:
unseq
and par_unseq
policies only have effect with compilers that support #pragma omp simd
or #pragma simd
.includes
, inplace_merge
, merge
, nth_element
, partial_sort
, partial_sort_copy
, set_difference
, set_intersection
, set_symmetric_difference
, set_union
, sort
, stable_partition
, stable_sort
, unique
.exclusive_scan
, inclusive_scan
, transform_exclusive_scan
, transform_inclusive_scan
shall be DefaultConstructible. A default constructed-instance of the initial value type shall be the identity element for the specified binary operation.max_element
, min_element
, minmax_element
, partial_sort
, partial_sort_copy
, sort
, stable_sort
the dereferenced value type of the provided iterators shall be DefaultConstructible.remove
, remove_if
, unique
the dereferenced value type of the provided iterators shall be MoveConstructible.copy_if
, inplace_merge
, partial_sort
, partial_sort_copy
, partition_copy
, remove
, remove_if
, rotate
, sort
, stable_sort
, unique
, unique_copy
.