После прочтения документации я все еще не понимаю, как использовать par_unseq
. Я знаю, что ничего не могу сказать о порядке выполнения из-за многопоточности и векторизации, но могу ли я по-прежнему полагаться на порядок выходных данных?
transform([x0, x1, x2], f) == [f(x0), f(x1), f(x2)]]
Другими словами, этот тест когда-нибудь провалится?
std::vector<int> xs = {1, 2, 3, 4};
std::vector<int> ys(xs.size());
std::transform(
std::execution::par_unseq,
cbegin(xs), cend(xs),
begin(ys),
[](int x) { return x*x; });
std::vector<int> expected = {1, 4, 9, 16};
ASSERT_EQ(expected , ys);