আমি <=>
সি ++ 20 তে নতুন স্পেসশিপ অপারেটরের সাথে এক অদ্ভুত আচরণে চলে আসছি । আমি ভিজুয়াল স্টুডিও 2019 সংকলকটি ব্যবহার করছি /std:c++latest
।
এই কোডটি প্রত্যাশিত হিসাবে জরিমানা সংকলন করেছে:
#include <compare>
struct X
{
int Dummy = 0;
auto operator<=>(const X&) const = default; // Default implementation
};
int main()
{
X a, b;
a == b; // OK!
return 0;
}
তবে, আমি যদি এইটিতে এক্স পরিবর্তন করি :
struct X
{
int Dummy = 0;
auto operator<=>(const X& other) const
{
return Dummy <=> other.Dummy;
}
};
আমি নিম্নলিখিত সংকলক ত্রুটি পেয়েছি:
error C2676: binary '==': 'X' does not define this operator or a conversion to a type acceptable to the predefined operator
আমি ঝাঁকুনির উপরও এটি চেষ্টা করেছি এবং আমিও একইরকম আচরণ পেয়েছি।
আমি কেন ডিফল্ট বাস্তবায়ন operator==
সঠিকভাবে উত্পন্ন করে তার কিছু ব্যাখ্যা প্রশংসা করব , কিন্তু কাস্টমটি এটি করে না।