যদিও আমি এই ওয়ার্কিং ড্রাফ্ট সি ++ স্ট্যান্ডার্ড (২০১৪ সাল) তে কোনও অবিচ্ছেদ্য ধরণের রূপান্তর নিষিদ্ধ বলে কোনও স্পষ্ট উল্লেখ খুঁজে পাই না , তবে এমন রূপান্তর অনুমোদিত কিনা তাও উল্লেখ নেই!std::nullptr_t
যাইহোক, থেকে রুপান্তরের ক্ষেত্রে std::nullptr_t
করতে bool
হয় স্পষ্টভাবে উল্লেখ করেছে:
৪.১২ বুলিয়ান রূপান্তরগুলি
পাটিগণিত, আনস্কোপড গণনা, পয়েন্টার বা পয়েন্টার থেকে সদস্য প্রকারের মূল প্রকারকে টাইপ বুলের একটি মূলতে রূপান্তরিত করা যেতে পারে। একটি শূন্য মান, নাল পয়েন্টার মান বা নাল সদস্য পয়েন্টার মানকে মিথ্যে রূপান্তর করা হয়; অন্য যে কোনও মানকে সত্যে রূপান্তরিত করা হয়। ডাইরেক্ট-ইনিশিয়ালাইজের জন্য (.5.৫), স্টাড :: নালপ্টর_ টাইপের একটি মূল্যকে বুল টাইপের একটি মূলতে রূপান্তর করা যেতে পারে; ফলাফল মান মিথ্যা।
আরও, এই খসড়া নথির একমাত্র জায়গা যেখানে std::nullptr_t
অবিচ্ছেদ্য ধরণের রূপান্তরকরণের কথা বলা হয়েছে, এটি "পুনরায় ব্যাখ্যা_কাস্ট" বিভাগে রয়েছে:
5.2.10 কাস্ট পুনরায় ব্যাখ্যা করুন
...
(4) একটি পয়েন্টারটি সুস্পষ্টভাবে কোনও ধরণের ইন্টিগ্রাল ধরণের কাছে ধারণ করতে পারে যাতে এটি ধরে রাখতে পারে। ম্যাপিং ফাংশনটি বাস্তবায়ন-সংজ্ঞায়িত। [দ্রষ্টব্য: এটি অন্তর্নিহিত মেশিনের ঠিকানা কাঠামো জানেন যারা তাদের জন্য উদ্বেগজনক হবে না intended - শেষ নোট] std :: nullptr_t প্রকারের একটি মান একটি অবিচ্ছেদ্য প্রকারে রূপান্তরিত হতে পারে; রূপান্তরটির একই অর্থ এবং বৈধতা রয়েছে (অকার্যকর *) 0 এর সাথে ইন্টিগ্রাল টাইপের রূপান্তর as [দ্রষ্টব্য: একটি পুনরায় ব্যাখ্যা_কাস্ট কোনও ধরণের মানকে std :: nullptr_t প্রকারে রূপান্তর করতে ব্যবহার করা যাবে না। - শেষ নোট]
সুতরাং, এই দুটি পর্যবেক্ষণ থেকে, কেউ (আইএমএইচও) যুক্তিসঙ্গতভাবে অনুমান করতে পারে যে সংকলকটি MSVC
সঠিক।
সম্পাদনা : তবে, "ফাংশনাল নোটেশন কাস্ট" আপনার ব্যবহারের বিপরীতটি সম্ভবত প্রস্তাবিত হতে পারে! MSVC
কম্পাইলার, একটি সি-শৈলী ঢালাই ব্যবহার উদাহরণস্বরূপ কোন সমস্যা রয়েছে:
uintptr_t answer = (uintptr_t)(nullptr);
তবে (আপনার কোড হিসাবে), এটি এই সম্পর্কে অভিযোগ করে:
uintptr_t answer = uintptr_t(nullptr); // error C2440: '<function-style-cast>': cannot convert from 'nullptr' to 'uintptr_t'
তবুও, একই খসড়া স্ট্যান্ডার্ড থেকে:
5.2.3 স্পষ্টত ধরণের রূপান্তর (ক্রিয়ামূলক স্বরলিপি)
(1) একটি প্রথম-টাইপ-নির্দিষ্টকরণকারী (7.1.6.2) বা টাইপনেম-স্পেসিফায়ার (14.6) এর পরে একটি প্রথম বন্ধনীযুক্ত এক্সপ্রেশন-তালিকাটি বর্ণিত তালিকা প্রদত্ত নির্দিষ্ট ধরণের মান নির্মান করে। যদি অভিব্যক্তি তালিকার একটি একক অভিব্যক্তি হয় তবে ধরণের রূপান্তর এক্সপ্রেশনটি সংশ্লিষ্ট কাস্ট এক্সপ্রেশন (5.4) এর সমতুল্য (সংজ্ঞায়িত, এবং যদি অর্থ সংজ্ঞায়িত হয়) হয়। ...
"সংশ্লিষ্ট কাস্ট এক্সপ্রেশন (5.4)" সি-স্টাইলের castালাকে বোঝায়।