Я использую 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
в начале моего основного файла это решает, но это глупый обходной путь.
Кто-нибудь знает, как я могу это исправить?