gpt4 book ai didi

c++ - 可以在 C++20 中的类定义之外默认比较运算符吗?

转载 作者:行者123 更新时间:2023-12-04 11:18:42 25 4
gpt4 key购买 nike

从C++20开始,编译器可以通过operator ==() = default为用户类自动生成比较运算符。句法。但是这个运算符必须只在类定义中默认还是可以在类定义之后?
考虑程序:

struct A { friend bool operator==(A,A); };
bool operator==(A,A) = default;
它被 GCC 接受,但被 Clang 拒绝并出现错误:
error: equality comparison operator can only be defaulted in a class definition
演示: https://gcc.godbolt.org/z/KboK7frhb
哪个编译器就在这里?
例如,将运算符定义放在类定义之外对于将运算符仅包含在一个翻译单元中很有用,从而缩短大程序的编译时间。

最佳答案

P2085R0删除了对默认比较运算符在第一个声明中默认的要求。 Clang 目前不支持这个提议:https://clang.llvm.org/cxx_status.html
另见 https://reviews.llvm.org/D103929

关于c++ - 可以在 C++20 中的类定义之外默认比较运算符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69063548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com