是否有用于 c++ 短路的 gcc 扩展
Is there a gcc extension for c++ short-circuiting?
我想重载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。此处未列出以您描述的方式工作的扩展。
相关文章:
- 如何在macOS中的旧扩展clang和gcc编译器中初始化数组和向量
- 带有 gcc 和 clang 的可变参数宏扩展的奇怪行为
- 为什么gcc会破坏递归扩展宏
- 在折叠表达式中扩展参数包作为 lambda 捕获的一部分 - gcc 与 clang
- GCC vs CLANG:将捕获的参数包扩展两次
- c++:gcc 是否提供扩展宏/函数,例如数组大小"countof"?
- gcc矢量扩展中未对齐的加载/存储
- 利用gcc和clang进行多参数包扩展
- 将参数包扩展到具有折叠表达式的lambda -GCC与Clang
- GCC 不接受默认模板参数中的包扩展
- GCC与Visual Studio宏观扩展
- 未记录的GCC扩展:结构中的VLA
- 为内存管理扩展GCC
- GCC 的扩展初始值设定项列表警告
- GCC 4.6 和缺少的可变模板扩展
- gcc 扩展或宏,用于在编译时检查用于某些基本类型的位
- 是否有用于 c++ 短路的 gcc 扩展
- 初始化带有大括号的VLA是GCC错误或扩展
- 作为GCC 4.9扩展的正则函数中的参数,是auto
- 是否有用于隐式返回值的GCC扩展?