llvm/llvm-project
Auf GitHub ansehen[clang] [C++20] Defaulted `operator==` doesn't lookup in using-directive properly
Open
#97.087 geöffnet am 28. Juni 2024
clang:frontendgood first issue
Repository-Metriken
- Stars
- (26.378 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 1T 2h) (1.000 gemergte PRs in 30 T)
Beschreibung
https://godbolt.org/z/c8v65nGzc
struct X {};
namespace NS {
bool operator==(X, X);
}
using namespace NS;
struct Y {
X x;
friend bool operator==(Y, Y);
};
bool operator==(Y, Y) = default;
<source>:10:6: error: defaulting this equality comparison operator would delete it after its first declaration
10 | bool operator==(Y, Y) = default;
| ^
<source>:7:7: note: defaulted 'operator==' is implicitly deleted because there is no viable 'operator==' for member 'x'
7 | X x;
| ^
If it is defaulted in the class it does compile and properly call NS::operator==(X, X): https://godbolt.org/z/M8Msc8T3a
If the function-body is replaced it also compiles: https://godbolt.org/z/19sEre7KW