2012-02-29 44 views
6

也許是一個奇怪的問題,但是有沒有任何軟件可以使用,它給出了一堆C++ 11代碼,派生所有類型的自動類型變量並重寫代碼與那些派生類型?還適用於初始化列表?自動將C++ 11自動關鍵字重寫爲派生類型

推理是我們想提供一個向後兼容版本的代碼(非C++ 11),主要是爲了與osx一起移植。自動鍵入和初始化列表是我們最常用的功能,因爲它們使代碼更易讀,但手動刪除它們是不行的。因爲這實際上是編譯器用自動類型化變量做的事情,所以它看起來並不太容易?

+1

libclang來拯救? – sehe 2012-02-29 10:25:50

+0

你能說說@sehe嗎? clang是否以這種方式做了些什麼?僅供參考,clang 3.0在C++ 11中不支持足夠的功能來編譯我們的代碼。 – 2012-02-29 10:37:24

+1

@BroesDeCat:他建議你使用Clang的編譯器庫來編譯你的代碼,然後把它寫回去,'auto'全部轉換爲它們的推導類型。 – 2012-02-29 11:09:00

回答

2

如果你可以使用Boost,那麼你可以看看boost::typeof。它不會完全做auto,但在大多數情況下,它可以通過正則表達式搜索來自動替換。

1

聽起來像Eclipse CDT的重構插件的一個功能(我實際上早就向我的學生提過這個插件)。可能是下個學期,我可以找到一個團隊來創造這樣的。但是,Eclipse CDT的信息可能不足以總是確定正確的東西。

對於一些啓動器列表,例如那些填充向量的啓動器列表,boost :: assign可能是替換。我們的Mockator模擬對象基礎架構將這些用於C++ 03,而不是C++ 11中的初始化器列表。

你不應該害怕Boost庫,至少不是那些以header-only形式出現的庫。那些具有單獨的庫文件可以輕鬆地正確設置(最近建立的情況得到改善)。