1
มันเป็น UB ที่จะกลับมาทำงานเป็นสมาชิก coroutine ของวัตถุที่อายุการใช้งานสิ้นสุดลงหรือไม่?
คำถามนี้เกิดจากความคิดเห็นนี้: คำอธิบายตลอดอายุการใช้งานแลมบ์ดาสำหรับ coroutines C ++ 20 เกี่ยวกับตัวอย่างนี้: auto foo() -> folly::coro::Task<int> { auto task = []() -> folly::coro::Task<int> { co_return 1; }(); return task; } ดังนั้นคำถามคือการดำเนินการ coroutine กลับโดยfooจะส่งผลใน UB "การเรียก" ฟังก์ชันสมาชิก (หลังจากสิ้นสุดอายุการใช้งานของวัตถุ) คือ UB: http://eel.is/c++draft/basic.life#6.2 ... ตัวชี้ใด ๆ ที่แสดงที่อยู่ของที่เก็บสินค้าซึ่งวัตถุนั้นจะเป็นหรือที่ตั้งอาจถูกนำมาใช้ แต่ในรูปแบบที่ จำกัด เท่านั้น [... ] โปรแกรมมีพฤติกรรมที่ไม่ได้กำหนดหาก: [ ... ] - ตัวชี้ใช้เพื่อเข้าถึงสมาชิกข้อมูลที่ไม่คงที่หรือเรียกใช้ฟังก์ชันสมาชิกแบบไม่คงที่ของวัตถุหรือ …