Тема: Паралельне сортування з ranges::sort
Намагаюся посортувати вектор з випадковими числами ось так:
#include <iostream>
#include <cstdlib>
#include <chrono>
#include <algorithm>
#include <numeric>
#include <cmath>
#include <random>
#include <execution>
auto main() -> int
{
auto start = std::chrono::system_clock::now();
constexpr std::size_t amount { 10000000 };
auto vec_float = std::vector<float>(amount);
std::iota(vec_float.begin(), vec_float.end(), 0.F);
std::ranges::transform(vec_float.begin(), vec_float.end(),
vec_float.begin(), std::sqrtf);
std::shuffle(vec_float.begin(), vec_float.end(),
std::mt19937_64 { std::random_device {}() });
std::ranges::sort(std::execution::par, vec_float);
auto end = std::chrono::system_clock::now();
auto time = std::chrono::duration_cast<std::chrono::seconds>(end - start);
std::cout << "Time: " << time << " seconds\n";
return EXIT_SUCCESS;
}
Видає помилку No matching function for call to object of type 'const __sort_fn' [ovl_no_viable_object_call].
Якщо використати просто sort, сортує нормально.
Якщо прибрати execution::par з ranges::sort, теж сортує нормально.
Не розумію, що не так.