C 11 區域性和匿名型別作模板實參

2022-06-02 10:39:09 字數 1042 閱讀 2948

c++11支援區域性的型別和匿名型別做模板的實參

在c++98中,標準對模板實參的型別還有一些限制。

具體地講,區域性的型別和匿名的型別在c++98中都不能做模板類的實參。

而在c++11標準中,支援做模板的實參。示例如下:

1 templateclass

x {};

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 2

struct

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 ...