雖然看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++的一部分?
未來 版本正式列入雖然我不認爲這也將成爲100%的官方直到C++ 17 ,你幾乎可以在C++ 14中完成它:'auto incr = [](auto x){return x ++;};' – chris
Cheers chris。是的,我知道那個。 – user2023370
在最新的標準草案N3936中我找不到在'N3889'的'4.1.2'和'5.1.1'中提到的任何附加內容,所以我會對C++ 14說不。 –