File tree Expand file tree Collapse file tree
src/tbb/include/oneapi/tbb Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11# RcppParallel (development version)
22
3+ * Fixed bundled oneTBB builds with recent libc++, which no longer includes
4+ ` <algorithm> ` transitively. ` tbb/concurrent_queue.h ` uses ` std::equal ` but
5+ did not include it, giving "no member named 'equal' in namespace 'std'" when
6+ compiling ` concurrent_bounded_queue.cpp ` , as seen on CRAN's clang-trunk
7+ checks. (#280 )
8+
39* Fixed bundled oneTBB builds and downstream compilation with Clang and libc++
410 when targeting macOS 10.12 or earlier, where C++17 aligned allocation is not
511 available. (#219 )
Original file line number Diff line number Diff line change 1+ Include <algorithm> in concurrent_queue.h, which uses std::equal in the
2+ operator== of both concurrent_queue and concurrent_bounded_queue but relies on
3+ some other header dragging <algorithm> in.
4+
5+ libc++ trunk (as used by CRAN's clang-trunk / clang 23 checks) no longer
6+ provides that transitive include, so building the bundled oneTBB fails with
7+ 'no member named equal in namespace std' when compiling
8+ src/tbb/concurrent_bounded_queue.cpp. Sibling containers -- concurrent_vector.h,
9+ concurrent_lru_cache.h -- already include <algorithm> explicitly; this brings
10+ concurrent_queue.h in line.
11+
12+ Not yet fixed upstream as of oneTBB master; drop this once it is.
13+
14+ diff --git a/src/tbb/include/oneapi/tbb/concurrent_queue.h b/src/tbb/include/oneapi/tbb/concurrent_queue.h
15+ index 9d7ec9a2..dd2ff34c 100644
16+ --- a/src/tbb/include/oneapi/tbb/concurrent_queue.h
17+ +++ b/src/tbb/include/oneapi/tbb/concurrent_queue.h
18+ @@ -24,6 +24,8 @@
19+ #include "detail/_containers_helpers.h"
20+ #include "cache_aligned_allocator.h"
21+
22+ + #include <algorithm> // std::equal
23+ +
24+ namespace tbb {
25+ namespace detail {
26+ namespace d2 {
Original file line number Diff line number Diff line change 2424#include " detail/_containers_helpers.h"
2525#include " cache_aligned_allocator.h"
2626
27+ #include < algorithm> // std::equal
28+
2729namespace tbb {
2830namespace detail {
2931namespace d2 {
You can’t perform that action at this time.
0 commit comments