我在Macbook Air上运行macOS Monterey 12.6.1,没有进一步的更新可用。我检查了我的AppleClang版本,它是14.0.0。如果我用std::boyer_moore_searcher
编译一个简单的c++代码,这个函数不会像这篇文章中指出的那样被发现。是否有任何原因导致C++17
特性仍然不被支持?有办法让它工作吗?我无法安装最新的macOS Ventura,因为它甚至不支持手动安装。最新的macOS是否可以解决看似过时的clang头的问题,因为我可以进一步更新其他软件?
https://en.cppreference.com/w/cpp/17
根据这个图表,Apple Clang仍然不支持你想要的执行策略。
由于正常的Clang也不支持这个,你可以尝试安装GCC和它的标准库来代替。
@DXPower
这个表实际上不是很清楚,如果你读"并行算法和执行策略"这一行的话。你会发现Intel Parallel STL表被标记为。
你确实可以使用clang的并行算法,但你必须链接到tbb和tbbmalloc(静态或动态),并从英特尔下载和安装oneDPL
英特尔oneDPL
或使用homebrew安装:
install onedpl
安装后,您可以从文件夹
访问算法。/opt/homebrew/include/oneapi(如果在Mac Os Ventura上安装了homebrew)
或在旧的操作系统
下/usr/地方/include/oneapi
为了避免链接错误,最好以以下方式包含标题(示例)
#include <dpl/algorithm>
#include <dpl/execution>
然后调用(example)
std::for_each(std::execution::par_unseq ... more code)
你可以在Android或iOS中以同样的方式使用parallel stl,见
Android ParallelSTL
大约从2020年开始,我就一直这样使用并行模式。
无论你使用Clang还是Apple Clang,过程都是一样的。
std::boyer_moore_searcher自XCode 14.3:
XCode 14.3发布说明