https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100476

            Bug ID: 100476
           Summary: coroutines: questionable handling of void
                    get_return_object
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jason at gcc dot gnu.org
                CC: iains at gcc dot gnu.org
  Target Milestone: ---

morph_fn_to_coro includes the comment

      /* For class type return objects, we can attempt to construct,
         even if the gro is void.  */

I don't see anything in the standard to allow this.

Disabling that support breaks pr96749-2.C, pr94879-folly-1.C,
pr94883-folly-2.C, which all have void get_return_object() and a coroutine that
returns non-void.  I believe this is the result of testcase reduction, not
something that a user actually wrote.

Munging the second of those to appease clang gives the error I expect:

https://godbolt.org/z/PTbsWf8hj

<source>:50:3: error: no viable conversion from returned value of type 'void'
to function return type 'n'

Reply via email to