You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When testing the following code, I am able to compile and execute when using clang++.
#include <cppcoro/generator.hpp>
#include <cppcoro/recursive_generator.hpp>
#include <iostream>
#include <type_traits>
cppcoro::generator<int> numbers(int begin, int end)
{
for (int i = begin; i < end; ++i)
{
co_yield i;
}
}
int main(int argc, char* argv[])
{
int begin = 10;
int end = 30;
auto predicate = [](auto&& obj) -> bool { return true; };
auto filter = [&pred_ = predicate](auto&& val) -> cppcoro::generator<typename std::decay_t<decltype(val)>::iterator::value_type> {
for (auto&& _v : val) {
if (pred_(_v)) {
co_yield _v;
}
}
};
auto range = filter(numbers(begin, end));
for (auto i : range) {
std::cout << i << "\n";
}
}
However, g++ gives the following error:
clang-test.cpp: In instantiation of ‘main(int, char**)::<lambda(auto:12&&)> [with auto:12 = cppcoro::generator<int>; typename std::decay<decltype (val)>::type::iterator::value_type = int]’:
clang-test.cpp:26:44: required from here
clang-test.cpp:22:17: error: ‘co_yield’ cannot be used in a ‘constexpr’ function
22 | co_yield _v;
| ^~~~~~~~
Compilation with g++ succeeds if I remove the if statement in filter.
I am using gcc version 10.2.0 and clang version 10.0.1. I have not found an explanation for why this behavior would differ between platforms, but a solution under GCC would be appreciated.
The text was updated successfully, but these errors were encountered:
When testing the following code, I am able to compile and execute when using clang++.
However, g++ gives the following error:
Compilation with g++ succeeds if I remove the if statement in filter.
I am using gcc version 10.2.0 and clang version 10.0.1. I have not found an explanation for why this behavior would differ between platforms, but a solution under GCC would be appreciated.
The text was updated successfully, but these errors were encountered: