」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?

為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?

發佈於2025-04-09
瀏覽:894

Why Does Microsoft Visual C   Fail to Correctly Implement Two-Phase Template Instantiation?
在Microsoft Visual C

中,Microsoft consions用戶strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate,該機制的哪些具體方面無法按預期運行?

背景:

說明:

的初始Syntax檢查在範圍中受到限制。它未能檢查是否存在聲明名稱的存在,導致名稱缺乏正確的聲明時會導致編譯問題。 為了說明這一點,請考慮以下示例:一個符合標準的編譯器將在第一階段解決FOO(0)調用,並將其綁定到foo(void*)。但是,MSVC將此過程推遲到第二階段,將FOO(0)綁定到foo(int),並導致錯誤。

它錯誤地解析了相關表達式,例如下面代碼中的bar(t),將僅在第二階段可見的聲明中。

在兩種情況下,MSVC的行為都違反了模板實例化的第一階段和第二階段之間指定的分離。此不正確的實現在Visual Studio 2015中仍然存在。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3