std::unwrap_reference, std::unwrap_ref_decay

来自cppreference.com
< cpp‎ | utility‎ | functional
 
 
 
函数对象
函数包装
(C++11)
(C++11)
部分函数应用
(C++11)
(C++20)
函数调用
(C++17)
恒等函数对象
(C++20)
引用包装
(C++11)(C++11)
unwrap_referenceunwrap_ref_decay
(C++20)(C++20)
运算符包装
取反器
(C++17)
搜索器
有制约的比较器
旧绑定器与适配器
(C++17 前)
(C++17 前)
(C++17 前)
(C++17 前)
(C++17 前)(C++17 前)(C++17 前)(C++17 前)
(C++20 前)
(C++20 前)
(C++17 前)(C++17 前)
(C++17 前)(C++17 前)

(C++17 前)
(C++17 前)(C++17 前)(C++17 前)(C++17 前)
(C++20 前)
(C++20 前)
 
定义于头文件 <functional>
template< class T >
struct unwrap_reference;
(1) (C++20 起)
template< class T >
struct unwrap_ref_decay : std::unwrap_reference<std::decay_t<T>> {};
(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_ref_decay_t = typename unwrap_ref_decay<T>::type;
(C++20 起)

[编辑] 可能的实现

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

[编辑] 注意

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

[编辑] 示例

[编辑] 参阅

可复制构造 (CopyConstructible) 且可复制赋值 (CopyAssignable) 的引用包装器
(类模板) [编辑]
创建一个根据参数类型所定义类型的pair对象
(函数模板) [编辑]
创建一个类型由参数类型定义的tuple对象
(函数模板) [编辑]