_GLIBCXX_USE_TBB_PAR_BACKEND не установлен в 1 - PullRequest
0 голосов
/ 19 мая 2019

Я использую Visual Studio Code с g ++ - 9 в Ubuntu 19.04 и пытаюсь использовать параллельные алгоритмы STL. Этот код прекрасно компилируется

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

int main() {
    std::vector<int> values(10u);

    std::iota(values.begin(), values.end(), 0);

    values.erase(std::remove_if(std::execution::par, values.begin(), values.end(), [](int& x){ return x % 2 == 0; }), values.end());

    for(int& v : values) {
        std::cout << v << '\n';
    }
    std::cout << std::endl;
}

с

Sandbox: main.o
    g++ -std=c++17 -o Sandbox main.o -l tbb

main.o: main.cpp
    g++ -std=c++17 -c main.cpp 

clean:
    rm *.o Sandbox

Но IntelliSense выдает мне ошибку - пространство имен 'std :: execute' не имеет члена 'par'. Это потому что

#define _GLIBCXX_USE_TBB_PAR_BACKEND __has_include(<tbb/tbb.h>)

в 'c ++ config.h' по какой-то причине не разрешается до 1?

Ввод

#define _GLIBCXX_USE_TBB_PAR_BACKEND 1

в начале моего основного файла это решает, но это глупый обходной путь. Кто-нибудь знает, как я могу это исправить?

...