是否存在用于c ++短路的gcc扩展?

时间:2016-01-16 22:42:55

标签: c++ gcc short-circuiting

我想在自定义类上重载operator&&operator||,我希望重载的运算符能够遵循其原生对象的短路行为。

我知道c ++语言中没有这种机制,但我想知道gcc是否可能有某种扩展可以实现这一点。我知道这样的扩展会导致gcc违反官方c ++标准,但我在gcc documentation上看到一个免责声明,“默认情况下,GCC还提供了一些C ++语言的附加扩展,罕见的情况与C ++标准冲突“,所以要求它似乎并不古怪。

如果有一个根本原因导致这种扩展根本无法发挥作用,即使在理论上也是如此,那么出于教育目的而知道也是一件好事。我觉得short_circuit_inline关键字可以用作inline的替代品,具有明确的含义和简单的实现,但也许我错了。

对于它的价值,我目前有一个宏的解决方法,AND(x,y,...,z)为我的自定义类的实例执行短路x && y && ... && z。我对操作员的渴望仅仅是出于美观目的。

1 个答案:

答案 0 :(得分:1)

答案是“不”。这里记录了所有gcc C ++扩展:https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html。没有列出的扩展名以您描述的方式工作。