是否有用于 c++ 短路的 gcc 扩展

Is there a gcc extension for c++ short-circuiting?

本文关键字:gcc 扩展 短路 c++ 用于 是否      更新时间:2023-10-16

我想重载operator&&并在自定义类上operator||,我希望重载运算符遵守其本机对应项的短路行为。

我知道 c++ 语言中没有这种机制,但我想知道 gcc 是否有某种扩展可以做到这一点。我知道这样的扩展会导致 gcc 违反官方的 c++ 标准,但我在 gcc 文档上看到免责声明,上面写着:"默认情况下,GCC 还为 C++ 语言提供了一些额外的扩展,在极少数情况下与 C++ 标准相冲突",所以问这个问题似乎并不奇怪。

如果有根本原因导致这种扩展根本行不通,即使在理论上也是如此,那么出于教育目的,了解这一点也是件好事。在我看来,这就像一个short_circuit_inline关键字,可以用作inline的直接替代品,具有明确定义的含义和直接的实现,但也许我错了。

就其价值而言,我目前有一个宏解决方法,AND(x,y,...,z)为我的自定义类的实例执行短路x && y && ... && z。我对操作员的渴望在某种程度上只是出于美容目的。

答案是否定的。所有 gcc C++ 扩展都记录在这里:https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html。此处未列出以您描述的方式工作的扩展。