সি ++ ২০ তে স্পেসশিপ <=>
অপারেটরের প্রবর্তনের সাথে সম্পর্কিত যেভাবে রিলেশনাল অপারেটররা কাজ করেছিলেন তা পরিবর্তিত হয়েছিল । বিশেষত, যদি আপনি কেবল সরবরাহ করেন operator==
তবে a != b
তা পুনরায় লিখিত হয় !(a == b)
।
থেকে [over.match.oper] /3.4 :
পুনরায় লিখিত প্রার্থী সেটটি নিম্নলিখিত হিসাবে নির্ধারিত হয়:
- রিলেশনাল ([এক্সপ্রেইল]) অপারেটরগুলির জন্য, পুনর্লিখিত প্রার্থীরা এক্স <=> y এক্সপ্রেশনটির জন্য সমস্ত অ-লিখিত প্রার্থীদের অন্তর্ভুক্ত করেছেন।
- রিলেশনাল ([এক্সপ্রেসেল]) এবং ত্রি-মুখী তুলনা ([এক্সপ্রেস স্পেসশিপ]) অপারেটরগুলির জন্য, পুনর্লিখিত প্রার্থীদের মধ্যে দুটি প্যারামিটারের বিপরীত ক্রমের সাথে সংশ্লেষিত প্রার্থীও অন্তর্ভুক্ত রয়েছে, প্রতিটি নন-রাইটিং প্রার্থীর জন্য এক্সপ্রেশন y <=> এক্স
- ! = অপারেটরের জন্য ([expr.eq]), পুনর্লিখিত প্রার্থীরা এক্স == y এক্সপ্রেশনটির জন্য সমস্ত অ-লিখিত প্রার্থীদের অন্তর্ভুক্ত করেছেন।
- সমতা অপারেটরগুলির জন্য, লিখিত প্রার্থীদের মধ্যে দুটি প্যারামিটারের বিপরীত ক্রমের সাথে সংশ্লেষিত প্রার্থী অন্তর্ভুক্ত রয়েছে, প্রতিটি অ-লিখিত প্রার্থীর জন্য y == x এক্সপ্রেশন।
- অন্যান্য সমস্ত অপারেটরের জন্য, পুনর্লিখিত প্রার্থী সেটটি খালি।
এবং [over.match.oper] / 9 :
যদি কোনও অপারেটর @ এর জন্য পুনর্লিখিত অপারেটর == প্রার্থীকে ওভারলোড রেজোলিউশন দ্বারা নির্বাচিত করা হয়, তবে তার রিটার্নের ধরণটি সিভি বুল হবে এবং এক্স @ ওয়াই এর অর্থ ব্যাখ্যা করা হবে:
- যদি @ হয়! = এবং নির্বাচিত প্রার্থী প্যারামিটারগুলির বিপরীত ক্রমের সংশ্লেষযুক্ত প্রার্থী হয়! (y == x),
- অন্যথায়, যদি @ হয়! =,! (x == y) ,
- অন্যথায় (যখন @ হয় ==), y == এক্স,
প্রতিটি ক্ষেত্রে নির্বাচিত পুনর্লিখিত অপারেটর == প্রার্থী ব্যবহার করে।
এর মতো, এর জন্য একটি স্পষ্ট ওভারলোডের operator!=
আর প্রয়োজন হয় না। অপারেটর অপসারণ তুলনা শব্দার্থবিজ্ঞান পরিবর্তন হয়নি।
operator!=
যতটা আমি বলতে পারি সমস্ত পাত্রে সেগুলি মুছে ফেলা হয়েছে (যেমন ভেক্টর সাইনোপসিস পরীক্ষা করুন )। কেবলমাত্র ব্যতিক্রমগুলি কনটেইনার অ্যাডাপ্টার std::queue
এবং std::stack
: আমার ধারণা হ'ল সাম্যতা অপারেটরগুলি প্রতিসাম্পূর্ণ না হলে ক্ষেত্রে তৃতীয় পক্ষের পাত্রে ব্যবহার করার সময় পিছনের সামঞ্জস্যতা সংরক্ষণ করা।