std::basic_common_reference<std::reference_wrapper>

来自cppreference.com
 
 
 
函数对象
函数调用
(C++17)(C++23)
恒等函数对象
(C++20)
旧式绑定器与适配器
(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 {typenamestd::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_wrapper,且引用左值引用的 R 的底层类型和 TQ 具有公共引用类型且 RQ 可以转换为该类型时,公共引用类型才有定义。

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

目录

[编辑]成员类型

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

[编辑]注解

功能特性测试标准功能特性
__cpp_lib_common_reference_wrapper202302L(C++23)使 std::reference_wrapperstd::common_reference_t 为引用类型

[编辑]示例

#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&, conststd::reference_wrapper<int>&>, int&>);int main(){}

[编辑]参阅

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