Как скомпилировать генератор и сопрограмму, используя c ++ 2a на Mac - PullRequest
0 голосов
/ 23 декабря 2018

Я настраиваю свой 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
    ^

ценим любое понимание того, как решить эту проблему компиляции.

1 Ответ

0 голосов
/ 23 декабря 2018

За Coroutines TS не проголосовали в C ++ 20 (действительно, было три отдельных голоса, с одобрением не достижения консенсуса во всех из них), так что даже если GCC его реализовал (, который не ), он не будет активирован переключателем -std=c++2a.

Теперь Clang реализует Coroutines TS, который вы должны включить с помощью -fcoroutines-ts,И, очевидно, вы должны использовать libc ++.

...