C++ 参考手册

位置:首页 > C++ 参考手册 >工具库 >函数对象 > std::unwrap_reference, std::unwrap_ref_decay

定义于头文件 <type_traits>
定义于头文件 <functional>
template< class T >
struct unwrap_reference;
(1) (C++20 起)
template< class T >
struct unwrap_ref_decay;
(2) (C++20 起)
1)T 为某类型 Ustd::reference_wrapper<U> ,则提供指名 U& 的成员 typedef type ;否则提供指名 T 的成员 typedef type
2)T 为某类型 Ustd::reference_wrapper<U> ,忽略 cv 限定和引用,则提供指名 U& 的成员 typedef type ;否则提供指名 std::decay_t<T> 的成员 typedef type

添加此页面上描述的任何模板的特化的程序行为未定义。

成员类型

 
名称 定义
type

1) 若 Tstd::reference_wrapper<U> 则为 U& ;否则为 T

2) 若 std::decay_t<T>std::reference_wrapper<U> 则为 U& ;否则为 std::decay_t<T>

辅助类型

template<class T>
using unwrap_reference_t = typename unwrap_reference<T>::type;
(1) (C++20 起)
template<class T>
using unwrap_ref_decay_t = typename unwrap_ref_decay<T>::type;
(2) (C++20 起)

可能的实现

template <class T>
struct unwrap_reference { using type = T; };
template <class U>
struct unwrap_reference<std::reference_wrapper<U>> { using type = U&; };
 
template< class T >
struct unwrap_ref_decay : std::unwrap_reference<std::decay_t<T>> {};

注解

std::unwrap_ref_decay 进行与 std::make_pairstd::make_tuple 所用者相同的变换。

示例

本节未完成
原因:暂无示例

参阅

可复制构造 (CopyConstructible) 可复制赋值 (CopyAssignable) 的引用包装器
(类模板)
创建一个 pair 对象,其类型根据各实参类型定义
(函数模板)
创建一个 tuple 对象,其类型根据各实参类型定义
(函数模板)