হ্যাঁ. এসটিএল পাত্রে মানগুলি কপির শব্দার্থবিজ্ঞান বজায় রাখা প্রয়োজন। আইওডাব্লু, তাদের আদিম ধরণের (যেমন ইন্ট্রি) মত আচরণ করা দরকার যার অর্থ, অন্যান্য জিনিসের মধ্যে সেগুলি ডিফল্ট-গঠনমূলক হতে হবে।
এটি (এবং অন্যদের প্রয়োজনীয়তা) ব্যতীত এসটিএল কনটেইনারগুলি প্রয়োগ করা হয় এমন ডেটা স্ট্রাকচারের বিভিন্ন অভ্যন্তরীণ অনুলিপি / মুভ / অদলবদল / তুলনা অপারেশনগুলি প্রয়োগ করা অকারণে শক্ত হবে।
সি ++ স্ট্যান্ডার্ডের বিষয়ে উল্লেখ করার পরে, আমি দেখছি আমার উত্তরটি সঠিক ছিল না। ডিফল্ট-নির্মাণ আসলে প্রয়োজন হয় না :
20.1.4.1 থেকে:
ডিফল্ট নির্মাণকারী প্রয়োজন হয় না। কিছু ধারক শ্রেণীর সদস্য ফাংশন স্বাক্ষরগুলি ডিফল্ট যুক্তি হিসাবে ডিফল্ট কনস্ট্রাক্টরকে নির্দিষ্ট করে। টি () অবশ্যই একটি সংজ্ঞায়িত এক্সপ্রেশন হতে হবে ...
সুতরাং, কঠোরভাবে বলতে গেলে, আপনার মানের ধরণটি কেবল তখনই ডিফল্ট গঠনযোগ্য হতে হবে যদি আপনি তার ধারকটির এমন কোনও ফাংশন ব্যবহার করেন যা তার স্বাক্ষরে ডিফল্ট কনস্ট্রাক্টর ব্যবহার করে।
এসটিএল পাত্রে সঞ্চিত সমস্ত মান থেকে আসল প্রয়োজনীয়তা (23.1.3) CopyConstructibleএবং Assignable।
নির্দিষ্ট পাত্রে অন্যান্য নির্দিষ্ট প্রয়োজনীয়তাও রয়েছে যেমন যেমন Comparable(যেমন কোনও মানচিত্রে কীগুলির জন্য)।
উল্লেখ্য, কোন ত্রুটি সহ নিম্নলিখিত প্রনয়ন Comeau :
#include <map>
class MyClass
{
public:
MyClass(int t);
};
int main()
{
std::map<int, MyClass> myMap;
}
সুতরাং এটি একটি জি ++ সমস্যা হতে পারে।