std::convertible_to (C++20 起)
来自cppreference.com
在标头 <concepts> 定义
|
||
template< class From, class To > concept convertible_to = |
(C++20 起) | |
概念 convertible_to<From, To> 指定类型和值类别均与 std::declval<From>() 相同的表达式能隐式和显式转换成 To
类型,而二种转换形式产生相等的结果。
语义要求
给定 std::add_rvalue_reference_t<From>() 类型的函数 fun
,使得表达式 fun() 保持相等性,仅当满足以下条件时,convertible_to<From, To> 得以实现:
- 以下任一成立
-
To
既非对象类型亦非到对象引用类型,或 - static_cast<To>(fun()) 等于 []() -> To { return fun(); }(),且
-
- 下列之一为真:
- std::add_rvalue_reference_t<From> 不是到对象引用类型,或
- std::add_rvalue_reference_t<From> 是到非 const 限定类型的右值引用,而 fun() 所引用对象的结果状态在上述任一表达式后合法但未指定;或
- 上述任一表达式不修改 fun() 所引用的对象。
相等性保持
标准库概念的 requires 表达式中声明的表达式都要求保持相等性(除非另外说明)。
引用
- C++23 标准(ISO/IEC 14882:2024):
- 18.4.4 Concept
convertible_to
[concept.convertible]
- 18.4.4 Concept
- C++20 标准(ISO/IEC 14882:2020):
- 18.4.4 Concept
convertible_to
[concept.convertible]
- 18.4.4 Concept
参阅
(C++11)(C++20) |
检查是否能转换一个类型为另一类型 (类模板) |