// compile with c++11
#include <iostream>
#include <typeinfo>
#include <stdint.h>
using namespace std;
template<typename T>
int GetSize(T arg)
{
cout << "type:" << typeid(arg).name() << ":";
return sizeof(arg);
}
template<typename T>
int GetSize2(T &arg)
{
cout << "type:" << typeid(arg).name() << ":";
return sizeof(arg);
}
int main()
{
int32_t arr[]={0,1,2,3,4,5,6,7,8,9};
int64_t arr2[]={0,1,2,3,4,5,6,7,8,9};
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;
}
向模板函数传递数组时,如果模板函数的参数无引用标记,则数组退化成指针; 如果模板参数含引用标记,则一般保持数组类型