// compile with c++11
#include #include #include using namespace std;
templateint getsize(t arg)
templateint getsize2(t &arg)
int main()
; int64_t arr2=;
cout << "type:" << typeid(arr).name() << ":";
cout << "sizeof(arr) :" << sizeof(arr) << endl;
cout << "getsize(arr) :" << getsize(arr) << endl;
cout << "getsize2(arr) :" << getsize2(arr) << endl;
cout << "type:" << typeid(arr2).name() << ":";
cout << "sizeof(arr2) :" << sizeof(arr2) << endl;
cout << "getsize(arr2) :" << getsize(arr2) << endl;
cout << "getsize2(arr2) :" << getsize2(arr2) << endl;
return 0;
}
向模板函式傳遞陣列時,如果模板函式的引數無引用標記,則陣列退化成指標; 如果模板引數含引用標記,則一般保持陣列型別 C 模板型別推導
內容參考 effective modern c 中的條款1 int x 27 const int cx x const int rx x const int p x 1.paramtype是個指標或引用,但不是個萬能引用 去引用不去const template void f t param f x ...
C 模板函式的型別推導
我在用泛型程式設計寫二維vector的排序模板時,寫出這樣乙個 vector的字典序比較,v1 v2是false templatebool cmp vector v1,vector v2 編譯結果 1 c program files x86 microsoft visual studio 10.0 ...
模板型別推導
param引用無const修飾template void f t param int x 1 const int cx x const int rx x f x f cx f rx 函式呼叫 t的型別 param的型別 f x intint f cx const int const int f rx...