c++11支援區域性的型別和匿名型別做模板的實參
在c++98中,標準對模板實參的型別還有一些限制。
具體地講,區域性的型別和匿名的型別在c++98中都不能做模板類的實參。
而在c++11標準中,支援做模板的實參。示例如下:
1 templateclassx {};
2 templatevoid
tempfun(t t) {};34
struct
a a;
5struct b; //
b是匿名型別變數
6 typedef struct b; //
b是匿名型別78
void
fun()
9 c; //
c是區域性型別
1112 xx1; //
c++98通過 c++11通過
13 xx2; //
c++98錯誤 c++11通過
14 xx3; //
c++98錯誤 c++11通過
1516 tempfun(a); //
c++98通過 c++11通過
17 tempfun(b); //
c++98錯誤 c++11通過
18 tempfun(c); //
c++98錯誤 c++11通過
19 }
但是,需要注意的是,雖然匿名型別可以被模板引數接受,如下寫法是不可以的:
1 template 2struct
mytemplate {};34
intmain()
5 > t; // 無法編譯通過,匿名型別的宣告不能在模板實參位置
7return0;
8 }
good good study, day day up.
順序 選擇 迴圈 總結
區域性和匿名型別作模板實參
在c 98中,模板的實參型別有限制,即區域性型別和匿名型別不能作為模板實參。1 template class x 2 template void tempfun t t 3struct a a 4struct b b是匿名型別變數 5 typedef struct b b是匿名型別67 void f...
C 11 自動型別推斷和型別獲取
1.自動型別判斷 編譯器能夠在乙個變數的宣告時候推斷出它的型別,那麼你就能夠用auto 關鍵字來作為他們的型別。接觸過泛型程式設計或者api程式設計的人大概可以猜出自動型別推斷是做什麼用的了 幫你省去大量冗長的型別宣告語句。如下 vector vec vector iterator itr vec....
C 11新特性之自動型別判斷以及匿名函式
1 auto關鍵字 在c 11中,加入了auto關鍵字進行自動型別判斷,省去了大量冗長的型別宣告語句。當你用auto關鍵字時,編譯器可以對你宣告的變數進行自動推導。比如 auto a 1 這裡就將a推導為int型。而我們經常使用vector迭代器,如果不使用auto的話,就會比較繁瑣,比如 std ...