1 // { dg-do run } 2 3 #include "coro.h" 4 5 struct simple { 6 static inline int alive = 0; simplesimple7 simple() { ++alive; } simplesimple8 simple(simple&&) { ++alive; } ~simplesimple9 ~simple() { --alive; } 10 11 struct promise_type { get_return_objectsimple::promise_type12 simple get_return_object() { return simple{}; } return_voidsimple::promise_type13 void return_void() {} unhandled_exceptionsimple::promise_type14 void unhandled_exception() {} initial_suspendsimple::promise_type15 auto initial_suspend() noexcept { return coro::suspend_never{}; } final_suspendsimple::promise_type16 auto final_suspend() noexcept { return coro::suspend_never{}; } 17 }; 18 }; 19 20 simple f()21f() 22 { 23 co_return; 24 } 25 main()26int main() { 27 { 28 f(); 29 } 30 31 if (simple::alive != 0) 32 { 33 PRINTF ("something wrong with dtors: %d\n", simple::alive); 34 abort (); 35 } 36 return 0; 37 } 38