1.關鍵字decltype:c++
在c98模板缺陷的改進,例:code
template<class T1,class T2> void ft(T1 x,T2 y) { ...?type xpy = x+y;//類型不知道,涉及類型轉換,運算符重載. }
在c11增長了decltype:模板
int x; decltype(x) y;//使得y的類型相似x. //在上面的問題能夠這樣解決 decltype(x+y) xpy = x + y;//decltype(x+y)這總體是一種類型; deltype具體實現比這裏的示例複雜
2.c++後置返回類型class
template<class T1,class T2 y> ?type? gt(T1 x,T2 y) { ... return x+y;//x+y類型未知, }
不可以使用decltype(x+y)做爲返回類型,xy還未聲明,就沒有xy,固然就沒有其類型,因此有下列語法語法
double h(int x,float y);使用新語法能夠寫成:float
auto h(int x,float y) -> double;類型轉換
則上面的模板能夠寫做:co
auto gt(T1 x,T2 y) -> decltype(x+y) { ... return x+y; }