c++ type traits
// 移除引用获取原始类型
template <typename _Tp>
struct remove_reference
{
typedef _Tp type;
};
template <typename _Tp>
struct remove_reference<_Tp &>
{
typedef _Tp type;
};
template <typename _Tp>
struct remove_reference<_Tp &&>
{
typedef _Tp type;
};