std::basic_common_reference<std::reference_wrapper>
在标头 <functional> 定义 | ||
template<class R, class T, template<class> RQual, template<class> TQual > | (1) | (C++23 起) |
template<class T, class R, template<class> TQual, template<class> RQual > | (2) | (C++23 起) |
辅助概念 | ||
template<class R, class T, class RQ, class TQ > concept /*ref-wrap-common-reference-exists-with*/= | (3) | (仅用于阐述*) |
一个 reference_wrapper
(以 R 代表)和一个类型 T 的公共引用类型,相应地应用 cv 和引用限定符(分别以 RQ 和 TQ 代表),等价于应用左值引用的 R 的底层类型和 TQ 的公共引用类型。
仅当 R 是仅有的 reference_wrapper
,且引用左值引用的 R 的底层类型和 TQ 具有公共引用类型且 RQ 可以转换为该类型时,公共引用类型才有定义。
当且仅当 R 是 std::reference_wrapper 的特化时,仅用于阐释的常量 /*is-ref-wrapper*/<R> 为 true。
目录 |
[编辑]成员类型
成员类型 | 定义 |
type | std::common_reference_t<typename R::type&, TQual<T>>(1,2) |
[编辑]注解
功能特性测试宏 | 值 | 标准 | 功能特性 |
---|---|---|---|
__cpp_lib_common_reference_wrapper | 202302L | (C++23) | 使 std::reference_wrapper 的 std::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(){}
[编辑]参阅
确定一组类型的公共引用类型 (类模板) |