ক্যাপচার তালিকায় স্পষ্টভাবে নামের প্রতিটি পরিবর্তনশীল ক্যাপচার করা হয় is ডিফল্ট ক্যাপচার কেবলমাত্র ভেরিয়েবলগুলি ক্যাপচার করবে যা উভয় (ক) ক্যাপচার তালিকায় স্পষ্টরূপে নামকরণ করা হয়নি এবং (খ) ল্যাম্বডা এক্সপ্রেশনের শরীরে ব্যবহৃত হয়। যদি কোনও ভেরিয়েবলের স্পষ্টরূপে নাম না দেওয়া হয় এবং আপনি ল্যাম্বদা এক্সপ্রেশনে ভেরিয়েবলটি ব্যবহার না করেন তবে ভেরিয়েবলটি ক্যাপচার করা হয় না। আপনার উদাহরণে my_huge_vectorধরা পড়ে না।
প্রতি সি ++ 11 §5.1.2 [এক্সপিআর.প্রিম.লাম্বদা] / ১১:
যদি কোনও ল্যাম্বডা-এক্সপ্রেশনটির সাথে সম্পর্কিত ক্যাপচার-ডিফল্ট থাকে এবং এর যৌগিক-বিবৃতি অর-ব্যবহার হয় this বা স্বয়ংক্রিয় স্টোরেজ সময়কালের সাথে কোনও ভেরিয়েবল থাকে এবং ওডার-ব্যবহৃত সত্তা সুস্পষ্টভাবে ক্যাপচার না করা হয়, তবে অদ্ভুত-ব্যবহৃত সত্তাকে সুস্পষ্টভাবে ক্যাপচার করা হয়েছে বলে বলা হয়।
আপনার ল্যাম্বডা এক্সপ্রেশনটির একটি সম্পর্কিত ক্যাপচার ডিফল্ট রয়েছে: ডিফল্টরূপে, আপনি মানটি ব্যবহার করে ভেরিয়েবলগুলি ক্যাপচার করেন [=]।
যদি এবং কেবলমাত্র কোনও ভেরিয়েবল ব্যবহার করা হয় ("ব্যবহৃত" শব্দের এক সংজ্ঞা বিধানে) একটি পরিবর্তনশীল স্পষ্টভাবে ক্যাপচার করা হয়। যেহেতু আপনি my_huge_vectorল্যাম্বডা এক্সপ্রেশনটির শরীরে ("যৌগিক বিবৃতি") ব্যবহার করবেন না , তাই এটি স্পষ্টতই ক্যাপচার করা হয়নি।
§5.1.2 / 14 সহ চালিয়ে যেতে
একটি সত্তা অনুলিপি দ্বারা ক্যাপচার করা হয় যদি
- এটি সুস্পষ্টভাবে ক্যাপচার এবং ক্যাপচার-ডিফল্ট হয়
=বা যদি
- এটি স্পষ্টভাবে একটি ক্যাপচারের সাথে ক্যাপচার করা হয় যাতে একটি অন্তর্ভুক্ত হয় না
&।
যেহেতু আপনার my_huge_vectorস্পষ্টরূপে ক্যাপচার করা হয়নি এবং এটি স্পষ্টভাবে ক্যাপচার করা হয়নি, এটি অনুলিপি, অনুলিপি বা রেফারেন্সের মাধ্যমে ধরা পড়ে না।