我刚刚收到来自 clang-tidy 的以下警告:
overloaded "operator++" returns a non-constant object
instead of a constant object type
https://clang.llvm.org/extra/clang-tidy/checks/cert-dcl21-cpp.html
不幸的是,他们在那里提供的链接不起作用,并且https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88046682没有简单的方法可以准确找到此规则(似乎 DCL 规则开始从 50)。
但无论我在标准中的哪个位置查看(例如 16.5.7 增量和减量 [over.inc]),我都没有发现后缀operator ++
应该返回 const 的参考:
struct X {
X operator++(int); // postfix a++
};
问题:只是clang-tidy 过度保护、错误或者我为什么要将后缀的返回类型声明为const?