2014-06-15 61 views
16

雖然看GCC 4.9.0發佈更改here,但我驚喜地看到以下內容;用於C++「新語言和語言特定的改進」部分下:C++ 14是否支持不受約束的泛型函數?

G ++如第4.1.2節和 的N3889: Concepts Lite Specification§5.1.1指定支持不受約束的通用功能。簡而言之,自動 可用作任何 函數聲明器的參數聲明中的類型說明符,以便引入隱式函數 模板參數,類似於通用lambdas。

// the following two function declarations are equivalent 
auto incr(auto x) { return x++; } 
template <typename T> 
auto incr(T x) { return x++; } 

我建GCC 4.9.0和我最初的測試和預期一樣。我相信Concepts Lite對於即將到來的C++ 14規範仍然有某種輔助作用。是否有任何計劃讓「不受限制的泛型函數」成爲C++的一部分?

+2

未來 版本正式列入雖然我不認爲這也將成爲100%的官方直到C++ 17 ,你幾乎可以在C++ 14中完成它:'auto incr = [](auto x){return x ++;};' – chris

+0

Cheers chris。是的,我知道那個。 – user2023370

+0

在最新的標準草案N3936中我找不到在'N3889'的'4.1.2'和'5.1.1'中提到的任何附加內容,所以我會對C++ 14說不。 –

回答

5

如果我們看一下(這是覆蓋在N3938)的最新標準草案N3936這是非常接近C++ 14 DIS這是N3937。它不包含在N38894.1.25.1.1部分中指定的任何語言。

因此對於C++ 14,它看起來像答案是否定的,但是Bjarne Stroustrup says concepts lite will be a technical report。你可以找到更多關於ISO cpp's Current Status page技術報告,其中說:

超越C++ 14日,委員會預期在2017年左右生產的另一個C++ 標準,並不意味着沒有在此期間發生的事情 ,但是,因爲我們目前有八(8)個獨立的 技術規格正在進行中,其中有幾個正在按照2014年和2015年發佈的 進行。從2012年開始,該委員會已將 轉換爲「分離」模型,其中主要部分工作 可以獨立於標準本身進行並作爲 單獨的TS發送。供應商可以選擇實施這些功能,並且社區可以獲得每個功能的std :: experimental版本 的使用體驗。這讓我們學習和調整基於體驗的各個要素的設計 之前它在實際的C++標準