命名空间
变体
操作

std::basic_common_reference<std::reference_wrapper>

来自 cppreference.com
 
 
实用程序库
语言支持
类型支持 (基本类型, RTTI)
库功能测试宏 (C++20)
动态内存管理
程序实用程序
协程支持 (C++20)
可变参数函数
调试支持
(C++26)
三方比较
(C++20)
(C++20)(C++20)(C++20)
(C++20)(C++20)(C++20)
通用实用程序
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中已弃用)
整数比较函数
(C++20)(C++20)(C++20)   
(C++20)
交换类型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
通用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
基本字符串转换
(C++17)
(C++17)

 
函数对象
函数调用
(C++17)(C++23)
恒等函数对象
(C++20)
透明运算符包装器
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

旧的绑定器和适配器
(直到 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 R, class T,

          template<class> RQual, template<class> TQual >
    requires (/*ref-wrap-common-reference-exists-with*/<R, T, RQual<R>, TQual<T>> &&
              !/*ref-wrap-common-reference-exists-with*/<T, R, TQual<T>, RQual<R>>)

struct basic_common_reference<R, T, RQual, TQual>;
(1) (自 C++23 起)
template< class T, class R,

          template<class> TQual, template<class> RQual >
    requires (/*ref-wrap-common-reference-exists-with*/<R, T, RQual<R>, TQual<T>> &&
              !/*ref-wrap-common-reference-exists-with*/<T, R, TQual<T>, RQual<R>>)

struct basic_common_reference<T, R, TQual, RQual>;
(2) (自 C++23 起)
辅助概念
template< class R, class T, class RQ, class TQ >

concept /*ref-wrap-common-reference-exists-with*/ =
    /*is-ref-wrapper*/<R> &&
    requires { typename std::common_reference_t<typename R::type&, TQ>; } &&

    std::convertible<RQ, std::common_reference_t<typename R::type&, TQ>>;
(3) (仅供说明*)

reference_wrapper (表示为 R) 和类型 T 的通用引用类型,分别应用 cv 和引用限定符(分别表示为 RQTQ),等效于 R 的基础类型应用左值引用和 TQ 的通用引用类型。

仅当 R 是唯一的 reference_wrapperR 的基础类型应用于左值引用,并且 TQ 具有一个公共引用类型,RQ 必须可转换为该类型时,才会定义公共引用类型。

仅用于说明的常量 /*is-ref-wrapper*/<R> 当且仅当 Rstd::reference_wrapper 的特化时为 true

内容

[编辑] 成员类型

成员类型 定义
type std::common_reference_t<typename R::type&, TQual<T>> (1,2)

[编辑] 注释

功能测试 Std 功能
__cpp_lib_common_reference_wrapper 202302L (C++23) 使 std::common_reference_tstd::reference_wrapper 成为一个引用类型

[编辑] 示例

#include <concepts>
#include <functional>
 
static_assert(std::same_as<std::common_reference_t<int&,
                                                   std::reference_wrapper<int>>,
                                                   int&>);
static_assert(std::same_as<std::common_reference_t<std::reference_wrapper<int>&,
                                                   int&>,
                                                   int&>);
static_assert(std::same_as<std::common_reference_t<int&,
                                                   const std::reference_wrapper<int>&>,
                                                   int&>);
int main() {}

[编辑] 另请参阅

确定一组类型的公共引用类型
(类模板) [编辑]