-
Notifications
You must be signed in to change notification settings - Fork 15.3k
Closed
Labels
clang:frontendLanguage frontend issues, e.g. anything involving "Sema"Language frontend issues, e.g. anything involving "Sema"confirmedVerified by a second partyVerified by a second party
Description
https://godbolt.org/z/134fjse57
struct A
{
_BitInt(64) a;
constexpr bool operator==(A const& a) const = default; // implicitly deleted due to _BitInt(64)
};
bool cmp(A a, A b)
{
return a == b; // error
}<source>:5:20: warning: explicitly defaulted equality comparison operator is implicitly deleted [-Wdefaulted-function-deleted]
5 | constexpr bool operator==(A const& a) const = default; // implicitly deleted due to _BitInt(64)
| ^
<source>:3:17: note: defaulted 'operator==' is implicitly deleted because implied comparison for member 'a' is ambiguous
3 | _BitInt(64) a;
| ^
note: built-in candidate operator(float, float)
note: built-in candidate operator(float, double)
note: built-in candidate operator(float, long double)
note: built-in candidate operator(float, __float128)
note: built-in candidate operator(float, int)
note: built-in candidate operator(float, long)
note: built-in candidate operator(float, long long)
note: built-in candidate operator(float, __int128)
note: built-in candidate operator(float, unsigned int)
note: built-in candidate operator(float, unsigned long)
note: built-in candidate operator(float, unsigned long long)
note: built-in candidate operator(float, unsigned __int128)
note: built-in candidate operator(double, float)
note: built-in candidate operator(double, double)
note: built-in candidate operator(double, long double)
note: built-in candidate operator(double, __float128)
note: built-in candidate operator(double, int)
note: built-in candidate operator(double, long)
note: built-in candidate operator(double, long long)
note: built-in candidate operator(double, __int128)
note: built-in candidate operator(double, unsigned int)
note: built-in candidate operator(double, unsigned long)
note: built-in candidate operator(double, unsigned long long)
note: built-in candidate operator(double, unsigned __int128)
note: built-in candidate operator(long double, float)
note: built-in candidate operator(long double, double)
note: built-in candidate operator(long double, long double)
note: built-in candidate operator(long double, __float128)
note: built-in candidate operator(long double, int)
note: built-in candidate operator(long double, long)
note: built-in candidate operator(long double, long long)
note: built-in candidate operator(long double, __int128)
note: built-in candidate operator(long double, unsigned int)
note: built-in candidate operator(long double, unsigned long)
note: built-in candidate operator(long double, unsigned long long)
note: built-in candidate operator(long double, unsigned __int128)
note: built-in candidate operator(__float128, float)
note: built-in candidate operator(__float128, double)
note: built-in candidate operator(__float128, long double)
note: built-in candidate operator(__float128, __float128)
note: built-in candidate operator(__float128, int)
note: built-in candidate operator(__float128, long)
note: built-in candidate operator(__float128, long long)
note: built-in candidate operator(__float128, __int128)
note: built-in candidate operator(__float128, unsigned int)
note: built-in candidate operator(__float128, unsigned long)
note: built-in candidate operator(__float128, unsigned long long)
note: built-in candidate operator(__float128, unsigned __int128)
note: built-in candidate operator(int, float)
note: built-in candidate operator(int, double)
note: built-in candidate operator(int, long double)
note: built-in candidate operator(int, __float128)
note: built-in candidate operator(int, int)
note: built-in candidate operator(int, long)
note: built-in candidate operator(int, long long)
note: built-in candidate operator(int, __int128)
note: built-in candidate operator(int, unsigned int)
note: built-in candidate operator(int, unsigned long)
note: built-in candidate operator(int, unsigned long long)
note: built-in candidate operator(int, unsigned __int128)
note: built-in candidate operator(long, float)
note: built-in candidate operator(long, double)
note: built-in candidate operator(long, long double)
note: built-in candidate operator(long, __float128)
note: built-in candidate operator(long, int)
note: built-in candidate operator(long, long)
note: built-in candidate operator(long, long long)
note: built-in candidate operator(long, __int128)
note: built-in candidate operator(long, unsigned int)
note: built-in candidate operator(long, unsigned long)
note: built-in candidate operator(long, unsigned long long)
note: built-in candidate operator(long, unsigned __int128)
note: built-in candidate operator(long long, float)
note: built-in candidate operator(long long, double)
note: built-in candidate operator(long long, long double)
note: built-in candidate operator(long long, __float128)
note: built-in candidate operator(long long, int)
note: built-in candidate operator(long long, long)
note: built-in candidate operator(long long, long long)
note: built-in candidate operator(long long, __int128)
note: built-in candidate operator(long long, unsigned int)
note: built-in candidate operator(long long, unsigned long)
note: built-in candidate operator(long long, unsigned long long)
note: built-in candidate operator(long long, unsigned __int128)
note: built-in candidate operator(__int128, float)
note: built-in candidate operator(__int128, double)
note: built-in candidate operator(__int128, long double)
note: built-in candidate operator(__int128, __float128)
note: built-in candidate operator(__int128, int)
note: built-in candidate operator(__int128, long)
note: built-in candidate operator(__int128, long long)
note: built-in candidate operator(__int128, __int128)
note: built-in candidate operator(__int128, unsigned int)
note: built-in candidate operator(__int128, unsigned long)
note: built-in candidate operator(__int128, unsigned long long)
note: built-in candidate operator(__int128, unsigned __int128)
note: built-in candidate operator(unsigned int, float)
note: built-in candidate operator(unsigned int, double)
note: built-in candidate operator(unsigned int, long double)
note: built-in candidate operator(unsigned int, __float128)
note: built-in candidate operator(unsigned int, int)
note: built-in candidate operator(unsigned int, long)
note: built-in candidate operator(unsigned int, long long)
note: built-in candidate operator(unsigned int, __int128)
note: built-in candidate operator(unsigned int, unsigned int)
note: built-in candidate operator(unsigned int, unsigned long)
note: built-in candidate operator(unsigned int, unsigned long long)
note: built-in candidate operator(unsigned int, unsigned __int128)
note: built-in candidate operator(unsigned long, float)
note: built-in candidate operator(unsigned long, double)
note: built-in candidate operator(unsigned long, long double)
note: built-in candidate operator(unsigned long, __float128)
note: built-in candidate operator(unsigned long, int)
note: built-in candidate operator(unsigned long, long)
note: built-in candidate operator(unsigned long, long long)
note: built-in candidate operator(unsigned long, __int128)
note: built-in candidate operator(unsigned long, unsigned int)
note: built-in candidate operator(unsigned long, unsigned long)
note: built-in candidate operator(unsigned long, unsigned long long)
note: built-in candidate operator(unsigned long, unsigned __int128)
note: built-in candidate operator(unsigned long long, float)
note: built-in candidate operator(unsigned long long, double)
note: built-in candidate operator(unsigned long long, long double)
note: built-in candidate operator(unsigned long long, __float128)
note: built-in candidate operator(unsigned long long, int)
note: built-in candidate operator(unsigned long long, long)
note: built-in candidate operator(unsigned long long, long long)
note: built-in candidate operator(unsigned long long, __int128)
note: built-in candidate operator(unsigned long long, unsigned int)
note: built-in candidate operator(unsigned long long, unsigned long)
note: built-in candidate operator(unsigned long long, unsigned long long)
note: built-in candidate operator(unsigned long long, unsigned __int128)
note: built-in candidate operator(unsigned __int128, float)
note: built-in candidate operator(unsigned __int128, double)
note: built-in candidate operator(unsigned __int128, long double)
note: built-in candidate operator(unsigned __int128, __float128)
note: built-in candidate operator(unsigned __int128, int)
note: built-in candidate operator(unsigned __int128, long)
note: built-in candidate operator(unsigned __int128, long long)
note: built-in candidate operator(unsigned __int128, __int128)
note: built-in candidate operator(unsigned __int128, unsigned int)
note: built-in candidate operator(unsigned __int128, unsigned long)
note: built-in candidate operator(unsigned __int128, unsigned long long)
note: built-in candidate operator(unsigned __int128, unsigned __int128)
<source>:5:51: note: replace 'default' with 'delete'
5 | constexpr bool operator==(A const& a) const = default; // implicitly deleted due to _BitInt(64)
| ^~~~~~~
| delete
<source>:10:14: error: object of type 'A' cannot be compared because its 'operator==' is implicitly deleted
10 | return a == b; // error
| ^
<source>:5:20: note: explicitly defaulted function was implicitly deleted here
5 | constexpr bool operator==(A const& a) const = default; // implicitly deleted due to _BitInt(64)
| ^
<source>:3:17: note: defaulted 'operator==' is implicitly deleted because implied comparison for member 'a' is ambiguous
3 | _BitInt(64) a;
| ^
note: built-in candidate operator(float, float)
note: built-in candidate operator(float, double)
note: built-in candidate operator(float, long double)
note: built-in candidate operator(float, __float128)
note: built-in candidate operator(float, int)
note: built-in candidate operator(float, long)
note: built-in candidate operator(float, long long)
note: built-in candidate operator(float, __int128)
note: built-in candidate operator(float, unsigned int)
note: built-in candidate operator(float, unsigned long)
note: built-in candidate operator(float, unsigned long long)
note: built-in candidate operator(float, unsigned __int128)
note: built-in candidate operator(double, float)
note: built-in candidate operator(double, double)
note: built-in candidate operator(double, long double)
note: built-in candidate operator(double, __float128)
note: built-in candidate operator(double, int)
note: built-in candidate operator(double, long)
note: built-in candidate operator(double, long long)
note: built-in candidate operator(double, __int128)
note: built-in candidate operator(double, unsigned int)
note: built-in candidate operator(double, unsigned long)
note: built-in candidate operator(double, unsigned long long)
note: built-in candidate operator(double, unsigned __int128)
note: built-in candidate operator(long double, float)
note: built-in candidate operator(long double, double)
note: built-in candidate operator(long double, long double)
note: built-in candidate operator(long double, __float128)
note: built-in candidate operator(long double, int)
note: built-in candidate operator(long double, long)
note: built-in candidate operator(long double, long long)
note: built-in candidate operator(long double, __int128)
note: built-in candidate operator(long double, unsigned int)
note: built-in candidate operator(long double, unsigned long)
note: built-in candidate operator(long double, unsigned long long)
note: built-in candidate operator(long double, unsigned __int128)
note: built-in candidate operator(__float128, float)
note: built-in candidate operator(__float128, double)
note: built-in candidate operator(__float128, long double)
note: built-in candidate operator(__float128, __float128)
note: built-in candidate operator(__float128, int)
note: built-in candidate operator(__float128, long)
note: built-in candidate operator(__float128, long long)
note: built-in candidate operator(__float128, __int128)
note: built-in candidate operator(__float128, unsigned int)
note: built-in candidate operator(__float128, unsigned long)
note: built-in candidate operator(__float128, unsigned long long)
note: built-in candidate operator(__float128, unsigned __int128)
note: built-in candidate operator(int, float)
note: built-in candidate operator(int, double)
note: built-in candidate operator(int, long double)
note: built-in candidate operator(int, __float128)
note: built-in candidate operator(int, int)
note: built-in candidate operator(int, long)
note: built-in candidate operator(int, long long)
note: built-in candidate operator(int, __int128)
note: built-in candidate operator(int, unsigned int)
note: built-in candidate operator(int, unsigned long)
note: built-in candidate operator(int, unsigned long long)
note: built-in candidate operator(int, unsigned __int128)
note: built-in candidate operator(long, float)
note: built-in candidate operator(long, double)
note: built-in candidate operator(long, long double)
note: built-in candidate operator(long, __float128)
note: built-in candidate operator(long, int)
note: built-in candidate operator(long, long)
note: built-in candidate operator(long, long long)
note: built-in candidate operator(long, __int128)
note: built-in candidate operator(long, unsigned int)
note: built-in candidate operator(long, unsigned long)
note: built-in candidate operator(long, unsigned long long)
note: built-in candidate operator(long, unsigned __int128)
note: built-in candidate operator(long long, float)
note: built-in candidate operator(long long, double)
note: built-in candidate operator(long long, long double)
note: built-in candidate operator(long long, __float128)
note: built-in candidate operator(long long, int)
note: built-in candidate operator(long long, long)
note: built-in candidate operator(long long, long long)
note: built-in candidate operator(long long, __int128)
note: built-in candidate operator(long long, unsigned int)
note: built-in candidate operator(long long, unsigned long)
note: built-in candidate operator(long long, unsigned long long)
note: built-in candidate operator(long long, unsigned __int128)
note: built-in candidate operator(__int128, float)
note: built-in candidate operator(__int128, double)
note: built-in candidate operator(__int128, long double)
note: built-in candidate operator(__int128, __float128)
note: built-in candidate operator(__int128, int)
note: built-in candidate operator(__int128, long)
note: built-in candidate operator(__int128, long long)
note: built-in candidate operator(__int128, __int128)
note: built-in candidate operator(__int128, unsigned int)
note: built-in candidate operator(__int128, unsigned long)
note: built-in candidate operator(__int128, unsigned long long)
note: built-in candidate operator(__int128, unsigned __int128)
note: built-in candidate operator(unsigned int, float)
note: built-in candidate operator(unsigned int, double)
note: built-in candidate operator(unsigned int, long double)
note: built-in candidate operator(unsigned int, __float128)
note: built-in candidate operator(unsigned int, int)
note: built-in candidate operator(unsigned int, long)
note: built-in candidate operator(unsigned int, long long)
note: built-in candidate operator(unsigned int, __int128)
note: built-in candidate operator(unsigned int, unsigned int)
note: built-in candidate operator(unsigned int, unsigned long)
note: built-in candidate operator(unsigned int, unsigned long long)
note: built-in candidate operator(unsigned int, unsigned __int128)
note: built-in candidate operator(unsigned long, float)
note: built-in candidate operator(unsigned long, double)
note: built-in candidate operator(unsigned long, long double)
note: built-in candidate operator(unsigned long, __float128)
note: built-in candidate operator(unsigned long, int)
note: built-in candidate operator(unsigned long, long)
note: built-in candidate operator(unsigned long, long long)
note: built-in candidate operator(unsigned long, __int128)
note: built-in candidate operator(unsigned long, unsigned int)
note: built-in candidate operator(unsigned long, unsigned long)
note: built-in candidate operator(unsigned long, unsigned long long)
note: built-in candidate operator(unsigned long, unsigned __int128)
note: built-in candidate operator(unsigned long long, float)
note: built-in candidate operator(unsigned long long, double)
note: built-in candidate operator(unsigned long long, long double)
note: built-in candidate operator(unsigned long long, __float128)
note: built-in candidate operator(unsigned long long, int)
note: built-in candidate operator(unsigned long long, long)
note: built-in candidate operator(unsigned long long, long long)
note: built-in candidate operator(unsigned long long, __int128)
note: built-in candidate operator(unsigned long long, unsigned int)
note: built-in candidate operator(unsigned long long, unsigned long)
note: built-in candidate operator(unsigned long long, unsigned long long)
note: built-in candidate operator(unsigned long long, unsigned __int128)
note: built-in candidate operator(unsigned __int128, float)
note: built-in candidate operator(unsigned __int128, double)
note: built-in candidate operator(unsigned __int128, long double)
note: built-in candidate operator(unsigned __int128, __float128)
note: built-in candidate operator(unsigned __int128, int)
note: built-in candidate operator(unsigned __int128, long)
note: built-in candidate operator(unsigned __int128, long long)
note: built-in candidate operator(unsigned __int128, __int128)
note: built-in candidate operator(unsigned __int128, unsigned int)
note: built-in candidate operator(unsigned __int128, unsigned long)
note: built-in candidate operator(unsigned __int128, unsigned long long)
note: built-in candidate operator(unsigned __int128, unsigned __int128)
1 warning and 1 error generated.
Compiler returned: 1
Metadata
Metadata
Assignees
Labels
clang:frontendLanguage frontend issues, e.g. anything involving "Sema"Language frontend issues, e.g. anything involving "Sema"confirmedVerified by a second partyVerified by a second party