এই প্রশ্নটি এই মন্তব্যটি থেকে উদ্ভূত: সি ++ 20 কর্টিনগুলির জন্য ল্যাম্বডা আজীবন ব্যাখ্যা
এই উদাহরণ সম্পর্কে:
auto foo() -> folly::coro::Task<int> {
auto task = []() -> folly::coro::Task<int> {
co_return 1;
}();
return task;
}
সুতরাং প্রশ্নটি হচ্ছে যে ফেরত দেওয়া করউটিন কার্যকর করার foo
ফলে ইউবি হবে।
সদস্যের ফাংশনটিকে "কল করা" (বস্তুর আজীবন শেষ হওয়ার পরে) হ'ল ইউবি: http://eel.is/c++draft/basic. Life# 6.2
... যে পয়েন্টারটি সেই স্টোরেজ অবস্থানের ঠিকানা প্রতিনিধিত্ব করে যেখানে বস্তুটি হবে বা ছিল তা কেবল সীমিত উপায়ে ব্যবহার করা যেতে পারে। [...] প্রোগ্রামটির আচরণ অপরিবর্তিত থাকলে যদি:
[...]
- পয়েন্টারটি কোনও অ স্থিতিশীল ডেটা সদস্য অ্যাক্সেস করতে বা অবজেক্টের অ-স্থিতিশীল সদস্য ফাংশনটি কল করতে ব্যবহৃত হয় , বা
তবে এই উদাহরণে:
()
যখন ল্যামডা এর জীবদ্দশায় এখনও বৈধ ল্যামডা এর অপারেটর বলা হয়- এটি স্থগিত করা হয়,
- তারপর ল্যাম্বদা ধ্বংস হয়ে যায়,
- এবং তারপরে সদস্য ফাংশন (অপারেটর
()
) এর কিছু সময় পরে আবার শুরু হয়।
এই পুনঃসূচনাটি কি অপরিবর্তিত আচরণ হিসাবে বিবেচিত হয়?
this
পয়েন্টারটি অবৈধ হয়। মন্তব্যগুলিতে আলোচনাটিও বিবেচনা করুন।