Я устанавливаю свой MacBook для C ++ 20 и у меня возникают проблемы при компиляции кода. Я установил последние Xcode, llvm и gcc. Вот код, который я пытаюсь скомпилировать
#include <chrono>
#include <experimental/coroutine>
#include <future>
#include <iostream>
using namespace std;
generator<int> getInts(int first, int last) {
for (auto i = first; i <= last; ++i) {
co_yield i;
}
}
int main() {
for (auto i : getInts(5, 10)) {
std::cout << i << " ";
}
}
однако я получаю следующую ошибку:
$ g++ gen.cpp -std=c++2a
In file included from gen.cpp:2:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/experimental/coroutine:66:5: warning:
<experimental/coroutine> cannot be used with this compiler [-W#warnings]
# warning <experimental/coroutine> cannot be used with this compiler
^
ценим любое понимание, как решить эту проблему компиляции.
Coroutines TS не был выбран в C ++ 20 (действительно, было три отдельных голоса, с одобрения не достижение консенсуса во всех из них), так что даже если GCC его реализовал (что это не так), он не будет активирован -std=c++2a
переключатель.
Теперь Clang реализует Coroutines TS, который вы должны включить -fcoroutines-ts
, И, очевидно, вы должны использовать libc ++.
Других решений пока нет …