সি ++ 11 এ ব্যবহার.সামার্ট.আর.শার্ড.কনস্ট / 9:
ইফেক্টস: একটি শেয়ার্ড_পিটার অবজেক্ট তৈরি করে যা অবজেক্ট পি এবং মুছে ফেলার মালিক d। দ্বিতীয় এবং চতুর্থ নির্মাতারা অভ্যন্তরীণ ব্যবহারের জন্য মেমরি বরাদ্দ করতে একটি অনুলিপি ব্যবহার করবেন।
দ্বিতীয় এবং চতুর্থ নির্মাতাদের এই প্রোটোটাইপ রয়েছে:
template<class Y, class D, class A> shared_ptr(Y* p, D d, A a);
template<class D, class A> shared_ptr(nullptr_t p, D d, A a);
সর্বশেষ খসড়াটিতে, ব্যবহার.সাম্পার্ট.শায়ারড.কম / 10 আমাদের উদ্দেশ্যে সমান:
ইফেক্টস: একটি শেয়ার্ড_পিটার অবজেক্ট তৈরি করে যা অবজেক্ট পি এবং মুছে ফেলার মালিক d। যখন টি অ্যারে টাইপ নয়, প্রথম এবং দ্বিতীয় কনস্ট্রাক্টরগুলি ভাগ করে_ফ্রমে_ পি সহ সক্ষম করে। দ্বিতীয় এবং চতুর্থ নির্মাতারা অভ্যন্তরীণ ব্যবহারের জন্য মেমরি বরাদ্দ করতে একটি অনুলিপি ব্যবহার করবেন। যদি একটি ব্যতিক্রম নিক্ষেপ করা হয়, d (পি) বলা হয়।
সুতরাং বরাদ্দকারী ব্যবহৃত হয় যদি বরাদ্দ মেমরিতে এটি বরাদ্দ করার প্রয়োজন হয়। বর্তমান মান এবং প্রাসঙ্গিক ত্রুটি প্রতিবেদনের ভিত্তিতে বরাদ্দ বাধ্যতামূলক নয় তবে কমিটি ধরে নিয়েছে।
যদিও এর ইন্টারফেসটি এমন shared_ptrএকটি বাস্তবায়নের অনুমতি দেয় যেখানে কখনই নিয়ন্ত্রণ ব্লক এবং সমস্ত থাকে না shared_ptrএবং weak_ptrএগুলি একটি লিঙ্কযুক্ত তালিকায় রাখা হয়, বাস্তবে তেমন কোনও বাস্তবায়ন হয় না। অতিরিক্ত হিসাবে, উদাহরণস্বরূপ, use_countভাগ করে নেওয়া হয়েছে তা ধরে ধরে শব্দটির সংশোধন করা হয়েছে ।
মুছে ফেলার জন্য কেবল গঠনমূলক পদক্ষেপ নেওয়া প্রয়োজন। সুতরাং, এটিতে বেশ কয়েকটি অনুলিপি থাকা সম্ভব নয় shared_ptr।
কেউ এমন একটি বাস্তবায়ন কল্পনা করতে পারেন যা মুছে ফেলা একটি বিশেষভাবে ডিজাইন করে shared_ptrএবং সরিয়ে দেয় যখন এটি বিশেষ shared_ptrমুছে ফেলা হয়। বাস্তবায়নটি সামঞ্জস্যপূর্ণ বলে মনে হলেও এটি আশ্চর্যের বিষয়, বিশেষত যেহেতু ব্যবহারের গণনার জন্য একটি নিয়ন্ত্রণ ব্লকের প্রয়োজন হতে পারে (এটি সম্ভবত ব্যবহারের গণনা সহ একই জিনিস করা এমনকি উইয়ার্ডারও হতে পারে)।
প্রাসঙ্গিক ডিআরএস আমি পেয়েছি: 545 , 575 , 2434 (যা স্বীকৃতি দেয় যে সমস্ত বাস্তবায়ন একটি নিয়ন্ত্রণ ব্লক ব্যবহার করছে এবং এটি বোঝায় যে মাল্টি-থ্রেডিং সীমাবদ্ধতা কিছুটা এটিকে নির্দেশ দেয়), 2802 (যার প্রয়োজন মুছে ফেলা কেবল গঠনমূলক পদক্ষেপে চলে যায় এবং ফলস্বরূপ বাস্তবায়নে বাধা দেয় যেখানে মুছে ফেলা বেশ কয়েকটি shared_ptrএর মধ্যে অনুলিপি করা হয় )।