std::unwrap_reference, std::unwrap_ref_decay
< cpp | utility | functional
定义于头文件 <type_traits>
|
||
定义于头文件 <functional>
|
||
template< class T > struct unwrap_reference; |
(1) | (C++20 起) |
template< class T > struct unwrap_ref_decay; |
(2) | (C++20 起) |
2) 若
T
为某类型 U
的 std::reference_wrapper<U> ,忽略 cv 限定和引用,则提供指名 U&
的成员 typedef type
;否则提供指名 std::decay_t<T>
的成员 typedef type
。添加此页面上描述的任何模板的特化的程序行为未定义。
成员类型
名称 | 定义 |
type
|
1) 若 2) 若 |
辅助类型
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_pair 及 std::make_tuple 所用者相同的变换。
示例
本节未完成 原因:暂无示例 |
参阅
(C++11) |
可复制构造 (CopyConstructible) 且可复制赋值 (CopyAssignable) 的引用包装器 (类模板) |
创建一个 pair 对象,其类型根据各实参类型定义 (函数模板) | |
创建一个 tuple 对象,其类型根据各实参类型定义 (函数模板) |