置尾返回型別 decltype auto

2021-08-29 02:39:38 字數 1217 閱讀 6128

/*

auto : 由編譯器推斷型別

decltype (表示式) -> 推斷出型別 , 比如: decltype(1+2) -> int;

decltype 需要注意 :表示式能明確型別才能推斷出來, 如果是模板引數則無法推斷,因為

模板型別引數總是在例項化後才能確定.

尾置: 在函式後使用 -> 型別; 函式返回型別需要加個 auto;

: auto f() -> double;

*/// 尾置一般的形式:

auto func() -> double (*)[100]

//另外一種返回使用decltype , 不需要尾置,但需要明確型別.這種不叫尾置

int arr = {};

decltype(arr) func()

//需要注意:

auto func() //編譯出錯. 前面加了auto ,說明這是乙個尾置, 需要加 ->type;

{}//把auto 與 decltype 結合

auto func() -> decltype(arr)

{}//在模板中;

template auto func(iter begin, iter end) -> decltype(*begin) //告訴編譯器返回型別與decltype推斷的一樣

//此時如果要複製乙份元素,而不是元素怎麼辦呢? remove_reference

/* remove_reference: 有1個type的型別成員

比如:remove_reference::type => int

remove_reference::type => double

由於 decltype(*begin) 可以由編譯器推斷

那麼我們可以把上面的宣告返回型別修改為: remove_reference< decltype(*begin) >::type

這樣就可以去除引用了 ;

但是這樣不行 ,需要加上 typename 關鍵字 :

typename remove_reference< decltype(*begin) >::type ;

一定要加typename 說明這個 type 是型別 , 而不是靜態成員變數.

*/template auto func(iter begin, iter end) -> typename remove_reference::type

C 11新特性 尾置返回型別

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

返回型別 》引用

1.何謂 引用 引用就是某個目標變數的 別名 alias 對應用的操作與對變數直接操作效果完全相同。申明乙個引用的時候,切記要對其進行初始化。引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,不能再把該引用名作為其他變數名的別名。宣告乙個引用,不是新定義了乙個變數,它只表示該引用名...

JS nodeType返回型別

nodename屬性含有某個節點的名稱。元素節點的 nodename 是標籤名稱 屬性節點的 nodename 是屬性名稱 文字節點的 nodename 永遠是 text 文件節點的 nodename 永遠是 document 注釋 nodename 所包含的 xml 元素的標籤名稱永遠是大寫的 n...