c++ tutorial নিরাপদ-বাল মূর্তি কি সি++ 11 তে অপ্রচলিত?




সি++ প্রোগ্রামিং বই (2)

হ্যাঁ। এই সমস্যাটির কারণে কেবলমাত্র অন্তর্নির্মিত ব্যবহারকারী-সংজ্ঞায়িত রূপান্তরগুলি এবং স্পষ্ট ব্যবহারকারী-সংজ্ঞায়িত রূপান্তর অপারেটরগুলির সমস্যাগুলির জন্য এটি উদাহরণস্বরূপ এবং সমস্ত নিরাপদ-বুল স্টাফকে অনেক ক্লিনার এবং আরও যৌক্তিকভাবে প্রতিস্থাপন করার জন্য কার্যত আবিষ্কার করা হয়েছে

এই উত্তর @ র। মার্টিনো ফার্নান্দেজ দেখায় যে নিরাপদ-বাল মূর্তিটি সি ++ 11 এ অব্যবহৃত হয়ে গেছে, এটি একটি সহজ দ্বারা প্রতিস্থাপিত করা যেতে পারে

explicit operator bool() const;

উত্তর §4 [conv] p3 মধ্যে মান উদ্ধৃতি অনুযায়ী:

একটি অভিব্যক্তি ই এবং যদি ঘোষণাটি T t=e; কিছু উদ্ভাবিত অস্থায়ী পরিবর্তনশীল t (§8.5) জন্য সুসংগঠিত হয়। কিছু ভাষা গঠন প্রয়োজন একটি এক্সপ্রেশন একটি বুলিয়ান মান রূপান্তর করা প্রয়োজন। যেমন একটি প্রসঙ্গে প্রদর্শিত একটি অভিব্যক্তি প্রসঙ্গগতভাবে বুল মধ্যে রূপান্তরিত বলা হয় এবং ঘোষণা যদি এবং শুধুমাত্র ঘোষণা যদি bool t(e); কিছু উদ্ভাবিত অস্থায়ী পরিবর্তনশীল টি (§8.5) জন্য সুসংগঠিত হয়।

হাইলাইটকৃত অংশটি স্পষ্টভাবে "অন্তর্নির্মিত স্পষ্ট কাস্ট" (মানচিত্রে "প্রাসঙ্গিক রূপান্তর" বলা হয়) @R হিসাবে দেখায়। Martinho এটা করা।

"নির্দিষ্ট ভাষা গঠন" যার জন্য "অন্তর্নিহিত স্পষ্ট কাস্ট" প্রয়োজন বলে মনে হচ্ছে:

  • if , while , ( §6.4 [stmt.select] p4 )
  • বাইনারি লজিক্যাল অপারেটর && এবং || ( §5.14 [expr.log.and/or] p1 উভয় জন্য)
  • যৌক্তিক অস্বীকার অপারেটর ! ( §5.3.1 [expr.unary.op] p9 )
  • শর্তাধীন অপারেটর ?: ( §5.14 [expr.cond] p1 )
  • static_assert ( static_assert §7 [dcl.dcl] p4 )
  • noexcept ( §15.4 [except.spec] p2 )

শিরোনাম আমাদের অনুমান সঠিক? আমি আশা করি আমরা কোনও সম্ভাব্য ত্রুটিগুলি উপেক্ষা করব না।


আমি এটা "অপ্রচলিত" কল হবে না। সবাই এখনো সি ++ 11 (এমনকি 1 বছর বয়সী নয়) পর্যন্ত লাফ দিচ্ছে। এমনকি যদি কোডারগুলির একটি ভাল পরিমাণও ছিল তবে কোডটি সামঞ্জস্যপূর্ণ রাখতে কোডটি সামর্থ্য রাখতে হবে, এই ধরনের মূদ্রাগুলি প্রোগ্রামগুলির চেয়ে সঠিকভাবে লাইব্রেরিগুলির জন্য আরও বেশি বিবেচ্য বলে বিবেচিত হবে।





safe-bool-idiom