2013-07-15 76 views
1

gcc的網站還稱: 「GCC對C++ 11的支持仍處於試驗階段。」 (http://gcc.gnu.org/projects/cxx0x.html)。 我感到猶豫在我的組織內爭論是否會轉向C++ 11功能,而釋放編譯器的人說這一點。 如果gcc說它是實驗性的,我應該爭論「-std = C++ 11」嗎?是使用-std = C++ 11適用於生產代碼GCC 4.8.1

+0

我不認爲從我看過的所有使用中都不會有問題。它非常符合標準,並且錯誤不會經常出現。 – chris

+1

http://gcc.gnu.org/gcc-4.8/cxx0x_status.html看起來相當不錯 – user2485710

+1

當問你自己這個問題時,考慮你的單元測試覆蓋率。 :) –

回答

2

我懷疑這是的,你可以說,直到事情發生了罕見的那些事(牛回家,地獄凍結等),並沒有找到一個解決一個。

這裏的關鍵是,「實驗性支持」大概意思是說,如果你是對GCC支持合同,你可能無法提高對11個特徵的「缺陷」票。但另一方面,我們可能會期望大多數功能都相當強大,因爲在C++ 11規範推出之前,它們已經討論了很長時間。

確定您的產品是否由編譯器正確構建的關鍵仍然依賴於您對產品代碼的測試(兩者均作爲各個級別的單元(函數,類,共享庫,可執行代碼對您的產品有意義)和「完整」產品)。根據C++ 11支持是否是實驗性的,這並沒有真正改變。即使非實驗代碼有時在編譯器中也會中斷。

另一部分看當然是「我們得到了什麼好處,又有多​​少風險它影響到項目」。你是在改變整個系統,還是僅僅在一個角落中的一小部分,如果它突破可以通過以不同的方式做更多的步驟來解決?

最後,它真的,你必須去的東西「什麼是前進和規避風險之間的最佳平衡。」

+0

我傾向於同意。我不知道當他們說「實驗性」時,組織的含義是什麼。 Clang等人。沒有這樣說。我真的認爲我們有這種情況,但海灣合作委員會的聲明似乎打敗了我的情況。 – John

+1

很顯然,我無法直接回答「GCC的實驗意味着什麼」 - 它通常被用作「我們還沒有完全測試過」(或者「它沒有通過驗證測試」或其他的東西這些線路 - 這可能是因爲驗證尚未完成,或者支持中出現了大量的漏洞 - 我不認爲它是後者,但很可能是前者)。當然,這有點依賴於你的組織做了什麼以及你測試的東西等等。我不確定我會用核試驗臺的「實驗」編譯器。遊戲開發,當然 –

+0

@John在我用g ++ 4.8.1的旅程中,我發現,例如,他們將其標記爲「實驗性」的一個可能原因可能在於,特定C++ 11中的線程模型實現是從POSIX線程庫借用的,所以它不是真正由編譯器或標準庫(libstdC++)實現的,它基本上是第三部分庫,GNU無法控制此項目。 – user2485710

相關問題