C 11新特性 尾置返回型別

2021-08-19 08:09:30 字數 672 閱讀 6765

尾置返回型別是在c++11標準中新增的語法,可以用於任何函式定義中,旨在方便複雜函式的定義。尾置返回型別跟在形參列表後面並以乙個->符號開頭。為了表示函式真正的返回型別跟在形參列表之後,需要在本應該出現返回型別的地方放置乙個auto關鍵字。

[cpp]view plain

copy

//宣告乙個返回指向陣列的指標的函式

//傳統定義

int (* func1(int arr[3], int n))[3]   

//使用尾置返回型別後

auto func1(int arr[3], int n) -> int(*)[3]   

這樣看似乎新語法糖非常有用,但如果函式返回型別的複雜度進一步提公升,情況就完全不一樣了。比如定義乙個返回指向函式的指標的函式:

[cpp]view plain

copy

//原版本:

int(*(*func2())(int arr[3], int n))[3]  

//使用尾置返回型別的版本

auto func2() ->  int (*(*)(int arr[3], int n))[3]   

這時候可以看出使用尾置返回型別與傳統定義在複雜度上沒什麼區別。個人認為對於複雜度較高的函式定義,還是用decltype更好。

C 11新特性之追蹤返回型別函式

追蹤返回型別函式是指把函式的返回型別後置,這在模板型別推導過程中非常有用處,比如下面的 templatedecltype t1 t2 sum t1 t1,t2 t2 在上面這個函式定義中,decltype無法推導出t1 t2的型別,因為編譯器是從左向右處理的,當處理到decltype的時候,編譯器還...

C 11新特性之POD型別

pod plain old data 是c 中非常重要的乙個概念,用來描述乙個型別的屬性其中plain表示這個型別是個平凡的型別,old表示其與c的相容性。c 11中將pod劃分為兩個基本概念 平凡的 trival 和標準布局 standardlayout 什麼是平凡性呢?通常乙個平凡的類或者結構體...

C 11新特性學習

lambda表示式用於建立匿名的函式物件,語法為 函式可訪問的的外部變數 函式引數 返回值型別 如 int a 1,b 2 int c b int x int b 表示函式中可以訪問外部變數b,而且引數b是按值傳遞,b 表示引數b是按引用傳遞,表示可以訪問所有外部變數,並且是用按值傳遞方式,類似,也...