我想在自定义类上重载operator&&
和operator||
,我希望重载的运算符能够遵循其原生对象的短路行为。
我知道c ++语言中没有这种机制,但我想知道gcc是否可能有某种扩展可以实现这一点。我知道这样的扩展会导致gcc违反官方c ++标准,但我在gcc documentation上看到一个免责声明,“默认情况下,GCC还提供了一些C ++语言的附加扩展,罕见的情况与C ++标准冲突“,所以要求它似乎并不古怪。
如果有一个根本原因导致这种扩展根本无法发挥作用,即使在理论上也是如此,那么出于教育目的而知道也是一件好事。我觉得short_circuit_inline
关键字可以用作inline
的替代品,具有明确的含义和简单的实现,但也许我错了。
对于它的价值,我目前有一个宏的解决方法,AND(x,y,...,z)
为我的自定义类的实例执行短路x && y && ... && z
。我对操作员的渴望仅仅是出于美观目的。
答案 0 :(得分:1)
答案是“不”。这里记录了所有gcc C ++扩展:https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html。没有列出的扩展名以您描述的方式工作。