Fed*_*dor 9 c++ visual-studio language-lawyer c++20
如果某个结构体A显式声明了operator ==方法,但同时存在全局operator ==接受类型为 的参数A,则相等比较将导致歧义错误。
在 C++20 中,我们可以调用不等式operator !=,编译器会将其解释为相等运算符的否定。我虽然在相同的情况下也会出现歧义错误,并且确实 GCC 和 Clang 显示了它,但最新的 Visual Studio 2019 接受代码:
struct A {
bool operator ==(const A&) const = delete;
};
bool operator ==(const A&, const A&) { return true; }
int main() {
A a;
//a == a; //error everywhere
return a != a; //ok in MSVC
}
Run Code Online (Sandbox Code Playgroud)
演示: https: //gcc.godbolt.org/z/ds53Wv783
这只是 MSVC 中的一个错误吗?
这似乎是 MSVC 中的一个错误,预计很快就会修复: https://developercommunity.visualstudio.com/t/in Correct -acceptable-of-ambigously-operator/1535876
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |