Namespaces
Variants

std:: convertible_to

From cppreference.net
定义于头文件 <concepts>
template < class From, class To >

concept convertible_to =
std:: is_convertible_v < From, To > &&
requires {
static_cast < To > ( std:: declval < From > ( ) ) ;

} ;
(C++20 起)

概念 convertible_to < From, To > 规定:与 std:: declval < From > ( ) 具有相同类型和值类别的表达式,能够隐式或显式转换为类型 To ,且两种转换形式产生的结果相等。

目录

语义要求

convertible_to < From, To > 仅在以下情况下被建模:给定类型为 std:: add_rvalue_reference_t < From > ( ) 的函数 fun ,且表达式 fun ( ) 保等性 的,

  • 要么
    • 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 概念 convertible_to [concept.convertible]
  • C++20 标准 (ISO/IEC 14882:2020):
  • 18.4.4 概念 convertible_to [concept.convertible]

参见

检查一个类型是否能转换为另一个类型
(类模板)