decltype (expression) var; // C++11
decltype是C++11新增的關鍵字
expression:
- 未用空號括起的識別符號:var型別等于識別符號型別
int a; decltype (a) var; // var type int
- 函式呼叫:var型別等于回傳型別
int sum(int, int); decltype (sum(1, 2)) var; // var type int
不會實際呼叫函式,編譯器僅查看原型來回傳型別
- 左值:var為指向其型別的參考
double xx = 4.4; decltype ((xx)) r2 = xx; // r2 is double & decltype (xx) w = xx; // w is double (Stage 1 match)
如果是識別符號,則要求是用括號括起的識別符號(什么是左值見“C++參考”)(字串不大清楚,待候補)
- 其它情況:var型別等于expression型別(如運算式:1+2、a+b等)
結合typedef可方便多次宣告:
typedef decltype(x +y) xytype; xytype xpy = x + y; // 宣告變數 xytype arr[10]; // 宣告陣列 xytype & rxy = arr[2]; // 宣告參考,rxy是arr第三個元素arr[2]的參考
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/20769.html
標籤:C++
上一篇:資料結構—鏈表
