【发布时间】:2020-10-19 23:12:45
【问题描述】:
据en.cppreference.com(据我所知):
-
std::is_convertible是一个 trait 类,要求类型From和To使得返回类型为To且返回From值的函数可以编译。 -
std::convertible_to是一个概念,要求From和To类型如上所述,AND 使得From类型的 r 值引用 可以是使用static_cast<To>转换。
std::is_convertible 提出的要求似乎相对简单。相反,std::convertible_to 的 r 值引用 强制转换要求对于 C++20 功能的简单示例中显示的这种通用概念来说似乎有些奇怪。
作为 C++ 新手,我不太了解两个网页中提供的一些术语和部分补充说明,我无法想象两者的要求之间的确切区别。
一些相互关联的问题:
- 类型
From和To不仅受到std::is_convertible的约束,而且还受到奇怪的 r 值引用转换要求的约束,这有什么实际意义? -
From和To的哪些候选类型另外被 r 值参考转换要求拒绝? - 为什么程序员可能希望使用
std::is_convertible或std::convertible_to中的任何一个而不是另一个作为其函数返回类型或参数类型的约束(除了概念的便利性 )?
更简单的解释或示例会有所帮助。谢谢!
【问题讨论】:
标签: c++ stl rvalue-reference c++20 c++-concepts