web-dev-qa-db-ja.com

ヘッダー「実行」と「std :: reduce」が見つかりません

このスニペットをコンパイルしようとしています

_#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の新しいバージョンが表示されていません。

13
lo tolmencre

std::reduceおよびstd::execution::parは、C++ 17以降で使用できます。

ほとんどのコンパイラでは、C++ 17はまだ完全には実装されていません。フラグ-std=c++1zでclangを使用してみることができます。

11
chema989