পিওডি টাইপ হওয়া কি তুচ্ছ, স্ট্যান্ডার্ড-লেআউট টাইপের হওয়ার সমান?


22

সি ++ 20 এ, POD এর ধারণাটি অবজ্ঞা করা হয়েছে, কারণ এটি তুচ্ছ এবং স্ট্যান্ডার্ড-বিন্যাস হওয়ার অর্থহীন সংমিশ্রিত বৈশিষ্ট্য। যাইহোক, সি ++ 20 খসড়ায় পিওডের সংজ্ঞা হুবহু "তুচ্ছ এবং মান-উভয় লেআউট" নয়; এটি আসলে:

একটি পিওডি ক্লাস এমন একটি শ্রেণি যা উভয় তুচ্ছ শ্রেণি এবং একটি মান-লেআউট শ্রেণি, এবং প্রকার নন-পিওডি ক্লাসের (বা এর অ্যারে) কোনও স্থিতিশীল ডেটা সদস্য নেই। একটি পিওডি টাইপ হ'ল একটি স্কেলারের ধরণ, একটি পিওডি ক্লাস, এ জাতীয় ধরণের একটি অ্যারে বা এই ধরণের একটির সিভি-যোগ্য সংস্করণ।

অন্য কথায়, একটি পিওডি টাইপই তুচ্ছ এবং স্ট্যান্ডার্ড-লেআউট উভয়ই নয়, তবে এটি পুনরাবৃত্তভাবেও হয়।

এই পুনরাবৃত্তির প্রয়োজনীয়তা কি অপ্রয়োজনীয়? অন্য কথায়, কোনও প্রকার যদি উভয়ই তুচ্ছ এবং স্ট্যান্ডার্ড-লেআউট হয় তবে এটি কি স্বয়ংক্রিয়ভাবে পুনরাবৃত্তভাবে তুচ্ছ এবং মান-বিন্যাস হয়? যদি উত্তরটি "না" হয়, তবে একটি আদর্শ-বিন্যাসের উদাহরণ, তুচ্ছ ধরনের যা পিওডি হতে ব্যর্থ হয়?

উত্তর:


12

সি ++ 20 এ, POD এর ধারণাটি অবজ্ঞা করা হয়েছে, কারণ এটি তুচ্ছ এবং স্ট্যান্ডার্ড-বিন্যাস হওয়ার অর্থহীন সংমিশ্রিত বৈশিষ্ট্য।

ত্রুটিপূর্ণ. পিওড শব্দটি হ্রাস করা হচ্ছে কারণ এটি এখন আর গুরুত্বপূর্ণ নয় :

পিওড শব্দটি স্ট্যান্ডার্ডে আর কোনও উদ্দেশ্যে কাজ করে না, এটি কেবল সংজ্ঞায়িত করা হয়, এবং যখন কয়েকটি অন্যান্য ধরণের এই তদন্তকারী সম্পত্তি সংরক্ষণ করে তখনই বিধিনিষেধগুলি প্রয়োগ হয়।

মূলত, তুচ্ছ এবং স্ট্যান্ডার্ড লেআউট উভয়ই এমন একটি ধরণের যা তুচ্ছ এবং স্ট্যান্ডার্ড বিন্যাস হ'ল তার নিজের দ্বারা সরবরাহ করে beyond দুটির সংমিশ্রণটি ধরণটিকে বিশেষ করে তোলে না এবং দুটি বৈশিষ্ট্যের একে অপরের সাথে খুব বেশি সম্পর্ক নেই।

স্ট্যান্ডার্ড লেআউটটি তার খালি খালি সাবোবজেক্টগুলির লেআউটটি ভালভাবে সংজ্ঞায়িত করা সম্পর্কে রয়েছে (পাশাপাশি খালি বেস শ্রেণীর সাবোবজেক্টগুলি টাইপের বিন্যাসকে বিরক্ত করছে না)। তুচ্ছতা সম্পর্কিত যা বিটগুলি সংরক্ষণ করে তার ব্লকের বাইরে কিছু অর্থ রয়েছে কিনা (এবং এটি বিটগুলির একটি স্বেচ্ছাসেবী ব্লকের সাথে আরম্ভ করা হলে এটি ধারণামূলকভাবে একটি বৈধ বস্তু কিনা)।

যদি আমি এমন কোনও টেম্পলেট তৈরি করি যা কোনও প্রকারের লাগে Tএবং আমি দেখতে চাই memcpyযে আমি এই ধরণের বস্তুগুলি পারি কিনা , তবে আমি এর সদস্যদের বিন্যাসের বিষয়ে চিন্তা করি না; এটি জানতে চাই যে এটি তুচ্ছলিপিযোগ্য কিনা। একইভাবে, offsetofশ্রেণিতে যদি ব্যবহারকারী দ্বারা সরবরাহিত অনুলিপি নির্মাণকারী থাকে তবে তার যথার্থতা সামান্যতম বিবেচ্য নয়। সদস্য সাবওবজেক্টগুলির লেআউটটি যদি একটি পরিষ্কার, মান-প্রয়োগকৃত ক্রমে ঘটে তবে এর জন্য এটি কেবল গুরুত্ব দেয়।

মূলত, লোকেরা চারপাশে দেখে এবং বুঝতে পেরেছে যে সি ++ এর মধ্যে এমন কিছুই অবশিষ্ট নেই যা বিশেষভাবে তুচ্ছতা এবং মানক বিন্যাসের ছেদ প্রয়োজন । সুতরাং এটির জন্য আমাদের কোনও পদ সংরক্ষণ করার দরকার নেই। সেই কয়েকটি জায়গাগুলি যেখানে স্ট্যান্ডার্ড স্পষ্টভাবে বলে যে কিছু প্রকারের "POD" হবে যথাযথভাবে "তুচ্ছ এবং মানক বিন্যাস" দ্বারা প্রতিস্থাপন করা যেতে পারে।

এই পুনরাবৃত্তির প্রয়োজনীয়তা কি অপ্রয়োজনীয়?

যেহেতু উভয় উপাদানীয় প্রয়োজনীয়তা পৃথকভাবে পুনরাবৃত্ত, উভয়ের ছেদটি পাশাপাশি পুনরাবৃত্ত হয়। সুতরাং এটি স্পষ্ট করে বলার দরকার নেই যে সমস্ত সাবওজেক্টগুলিও পিওডি। এটি সম্ভবত একটি অনুলিপি-অনুলিপি সম্পর্কিত একটি ঘটনা ছিল, যেখানে মূল সংজ্ঞাটি বলেছিল যে "সমস্ত অ-স্থিতিশীল ডেটা সদস্যদের অবশ্যই পিওডির ধরণের হতে হবে" এবং তারা ঠিক সেই বিবৃতিটি ঠিক রেখেছিল।


" সদস্য সাবোবজেক্টগুলির লেআউটটি যদি একটি পরিষ্কার, মান-প্রয়োগযোগ্য ক্রমে ঘটে তবে এটিকে কেবল গুরুত্ব দেওয়া হচ্ছে " কেন কোনও সদস্যের অফসেট নির্ধারণ করতে সক্ষম হওয়ার জন্য এই আদেশটি কেন প্রয়োগ করতে হবে? যেখানে সদস্যদের অফসেট নেই সেখানে পাগল প্ররোচনার অনুমতি দেওয়া কি এই স্ট্যান্ডের লক্ষ্য?
কৌতূহলী

1

স্ট্যান্ডার্ড বিন্যাস স্থিতিশীল সদস্যদের স্ট্যান্ডার্ড বিন্যাসের উপর নির্ভর করে:

[Class.prop]

একটি ক্লাস এস একটি স্ট্যান্ডার্ড-লেআউট শ্রেণি যদি এটি হয়:

  • প্রকার অ-মানক-লেআউট শ্রেণীর (বা এই জাতীয় ধরণের অ্যারে) বা রেফারেন্সের কোনও অ-স্থিতিশীল ডেটা সদস্য নেই,

  • ...

তুচ্ছতা স্থিতিশীল সদস্যদের তুচ্ছতার উপরও নির্ভর করে। সংক্ষিপ্ততার জন্য, আমি কেবলমাত্র ডিফল্ট নির্মাতার জন্য নিয়মটি উদ্ধৃত করেছি, তবে অন্যান্য বিশেষ সদস্য ফাংশনগুলিতে একই শব্দ রয়েছে:

[Class.default.ctor]

একটি ডিফল্ট কনস্ট্রাক্টর তুচ্ছ যদি এটি ব্যবহারকারীর দ্বারা সরবরাহ করা হয় না এবং যদি:

  • ...
  • শ্রেণীর ধরণের (বা এর অ্যারে) এর শ্রেণীর অ-স্থিতিশীল ডেটা সদস্যদের জন্য, এই জাতীয় প্রতিটি শ্রেণীর মধ্যে একটি তুচ্ছ ডেস্ট্রাক্টর রয়েছে।

আমি যতদূর বলতে পারি, সদস্যদের ক্ষেত্রে প্রযোজ্য পিওডনেসের সুস্পষ্ট প্রয়োজনীয়তা অপ্রয়োজনীয়, কারণ এটি স্ট্যান্ডার্ড লেআউট এবং তুচ্ছ হিসাবে প্রয়োজনীয়তার থেকেও স্পষ্টভাবে অনুসরণ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.