このスニペットをコンパイルしようとしています
_#include <vector>
#include <numeric>
#include <execution>
double result = std::reduce(std::execution::par, v.begin(), v.end());
_
私はこれらのコンパイラを試しました:
_Apple LLVM version 8.1.0 (clang-802.0.42)
clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
_
3つすべてが私に_'execution' file not found
_を与えます
それぞれerror: no member named 'reduce' in namespace 'std' auto result = std::reduce(v.begin(), v.end());
このスニペットの場合
_#include<numeric>
#include<vector>
int main(int argc, char *argv[])
{
std::vector<double> v(10, 1);
auto result = std::reduce(v.begin(), v.end());
return 0;
}
_
私のコンパイラは古すぎると思いますか?しかし cppreferenceで どのコンパイラバージョンが最小要件であるかは示されていません。また、リポジトリにclangまたはgccの新しいバージョンが表示されていません。
std::reduce
およびstd::execution::par
は、C++ 17以降で使用できます。
ほとんどのコンパイラでは、C++ 17はまだ完全には実装されていません。フラグ-std=c++1z
でclangを使用してみることができます。