Ошибка компиляции при использовании redu () и std :: execute в C ++ - PullRequest
3 голосов
/ 02 мая 2020

Я пытаюсь реализовать простой вариант использования reduce() и std:: execution. Я использую стандарт C ++ 17 для следующего кода. Однако следующий код по-прежнему не компилируется.

#include <iostream>
#include <numeric>
#include <vector>
#include <algorithm>
#include <execution>

int main() {
    std:: vector<int> vec(10);
    std:: iota(std::begin(vec), std::end(vec), 1);
    const auto result = std::reduce(std::execution::par, std::begin(vec),
            std::end(vec));
    std:: cout << result;
    return 0;
}

Ошибка:

C:\Users\Blind1729\Desktop>g++ --std=c++17 a.cpp
a.cpp: In function 'int main()':
a.cpp:8:25: error: 'reduce' is not a member of 'std'
    const auto result = std::reduce(std::execution::par, std::begin(vec),
                        ^
a.cpp:8:42: error: 'std::execution' has not been declared
    const auto result = std::reduce(std::execution::par, std::begin(vec),

1 Ответ

2 голосов
/ 02 мая 2020

Необходимо связать с TBB, так как это зависимость параллельного STD (см. C ++ 17 STL Parallel Algorithms - с G CC 9.1 и Intel TBB на Linux и macOS ):

g++ --std=c++17 a.cpp -ltbb

И убедитесь, что у вас установлен хотя бы G CC 9.1.

...