23#ifndef VCL_MISC_PARALLEL_H
24#define VCL_MISC_PARALLEL_H
26#include <vclib/concepts/range.h>
27#include <vclib/types.h>
33#define VCLIB_EMIT_REDEFINED
38#define POOLSTL_STD_SUPPLEMENT
39#if __has_include(<poolstl/poolstl.hpp>)
40#include <poolstl/poolstl.hpp>
42#include "../../../external/poolSTL-0.3.5/include/poolstl/poolstl.hpp"
46#ifdef VCLIB_EMIT_REDEFINED
47#undef VCLIB_EMIT_REDEFINED
74template<
typename Iterator,
typename Lambda>
75void parallelFor(Iterator&& begin, Iterator&& end, Lambda&& F)
77 std::for_each(std::execution::par, begin, end, F);
98template<
typename Iterator,
typename Lambda>
99void parallelFor(
const Iterator& begin,
const Iterator& end, Lambda&& F)
101 std::for_each(std::execution::par, begin, end, F);
119template<Range Rng,
typename Lambda>
120void parallelFor(Rng&& r, Lambda&& F)
122 parallelFor(std::ranges::begin(r), std::ranges::end(r), F);
140template<Range Rng,
typename Lambda>
141void parallelFor(
const Rng& r, Lambda&& F)
143 parallelFor(std::ranges::begin(r), std::ranges::end(r), F);