Visual Studio 错误:非常量引用绑定到临时对象
给定的代码片段说明了在 Visual Studio 中观察到的特殊行为:
class Zebra {int x;}; Zebra goo() {Zebra z; return z;} void foo(Zebra &x) { Zebra y; x = y; foo(goo()); }
Visual Studio 允许此代码编译而不会出现错误,而 gcc 会引发编译错误。当使用 typedef 将 Zebra 表示为 int 时,此行为变得更加令人费解,因为 Visual Studio 随后会检测到该问题。
此行为是由旧的 Visual Studio 扩展驱动的。正如 Microsoft 错误报告“临时对象可以绑定到非常量引用”中所述,Visual Studio 允许将非常量引用绑定到临时对象。
但是,可以使用 / 禁用此扩展Za 编译器标志,这将使相关代码片段成为错误。此外,还可以使用 4 级警告(使用 /W4 启用)来标记此问题。
以上是为什么 Visual Studio 允许非常量引用绑定到临时对象?的详细内容。更多信息请关注PHP中文网其他相关文章!