雖然普通函式不能使用auto形參,但可以使用返回型別推導。在c++11中我們可以使用後置返回型別推導來完成這件事情:
//**2.1
//c++11中使用後置返回型別推導
auto add(int x, int y) ->decltype(x + y)
而在c++14中,我們可以省略decltype,編譯器直接由return語句的值推導出返回型別:
//**2.2
//c++14中不需要後置decltype
auto add(int x, int y)
如果有多條return語句,則它們的返回型別必須相同,否則編譯器報錯:
//**2.3
auto pi(bool fract)
對於含有遞迴呼叫的函式,遞迴呼叫必須在第乙個return之後,否則編譯器在遞迴呼叫時還不知道返回型別:
//**2.4
auto fibonacci(int n)
正確的**為:
//**2.5
auto fibonacci(int n)
以上特性vc2015支援。
C 14嘗鮮 函式返回型別自動推導
函式返回型別自動推導是指c 11以及c 14中不直接給出函式返回型別,而是使用型別指示符來指示返回型別甚至徹底省略返回型別並最終由編譯器來推導返回型別的語言特性。函式返回型別自動推導原則如下 當lambda表示式中省略返回型別時,lambda表示式的返回型別由編譯器根據返回值以及模板引數推導規則進行...
C 14系列(2) C C 的時間函式
為了好好研究下c 14,順便複習下以前的c 知識。搞了個git 不斷完善中 裡面會慢慢封裝一些常用的函式,並做一些測試驗證,工程是建立在ubuntu的eclipse之上,見系列 1 環境搭建。參考 時間函式常用到的幾個概念 calendar time 日曆時間 epoch 時間點 clock tic...
c 學習筆記(返回引用的函式)
宣告出處 在c 語言中,由類宣告的物件,和其它型別宣告的變數一樣,同樣可以通過傳值 引用和指標的方式作為函式的引數或函式返回值。最好不要採用傳值的方式傳遞和返回物件,這是因為採用傳值的方式傳遞和返回物件的過程中需要經歷物件間的拷貝操作,這樣會在一定程度上降低程式執行的效率,從而使得待處理資料量增大,...