【C++】remove_refrence
template <typename T>
class remove_reference
{
public:
typedef T type;
};
template<typename T>
class remove_reference<T&>
{
public:
typedef T type;
};
看看remove_reference 的做了什么
他封装了一个普通的模板类,并且typedef T type,主要看第二个,封装了一个引用类型的T&
我们使用时remove_reference<decltype(*a)>,就会被传到第二个实现中。
remove_reference<int &> ,那么typedef int type,此时type就会变为int,解除引用。
int main()
{
int a[] = {1,2,3};
remove_reference<decltype(*a)>::type b = a[0];
a[0] = 4;
cout << b; //输出1
return 0;
}

浙公网安备 33010602011771号