亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

非Const引用綁定到臨時的VisualStudio錯誤?

非Const引用綁定到臨時的VisualStudio錯誤?

C++
小唯快跑啊 2019-06-25 15:26:04
非Const引用綁定到臨時的VisualStudio錯誤?我是在編譯一些可移植代碼時遇到這個問題的。gcc..基本上,這段奇怪的代碼是在VisualStudio中編譯的,它真的讓我大吃一驚:class Zebra {int x;};Zebra goo() {Zebra z; return z;}void foo(Zebra &x){     Zebra y;     x = y;     foo(goo());}Visual studio讓這個飛吧。gcc將此捕獲為編譯錯誤。有趣的是,如果你從Zebra到int,VC++會抱怨的。相當矛盾的行為。思想?
查看完整描述

2 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

這是VisualStudio的舊擴展,我可以在Microsoft站點上找到的唯一引用是以下錯誤報告:臨時對象可以綁定到非const引用。,它具有以下示例代碼:

struct?A?{};A?????f1();void?f2(A&);int?main(){
????f2(f1());?//?This?line?SHALL?trigger?an?error,?but?it?can?be?compiled?without?any?????errors?or?warnings.}

其中一份答復指出:

存在4級警告(如果將/w4傳遞給編譯器,則啟用4級警告)。

Visual C+是如此的自由。在這一擴展部分中,注意到:

使用禁用語言擴展(/za)會導致錯誤:


查看完整回答
反對 回復 2019-06-25
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

正如其他人所說,這要歸功于MicrosoftC+擴展。盡管/Za不建議使用標志,因為它會破壞事物。

相反,請使用/permissive-切換到更好的標準遵從性,您將得到這些情況下的健康錯誤。請注意,此標志可從VS 2017開始使用。

開關/za不支持某些關鍵的MicrosoftSDK頭文件。相反/允許性-提供了一種有用的一致性模式,其中輸入C+代碼根據ISO C+規則進行解釋,但也允許在VisualC+支持的目標上編譯C+所需的一致性擴展。


查看完整回答
反對 回復 2019-06-25
  • 2 回答
  • 0 關注
  • 485 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號