根据en.cppreference.com(据我所知):
-
作为C++新手,我无法理解两个网页提供的一些术语和补充说明的部分,也无法想象两者之间的确切差异。
以下是一些相关问题:
- 对于不仅受
以下是一个更简单的解释或示例。谢谢!
-
std::is_convertible
是一个特征类,要求类型From
和To
是这样的:返回类型为To
的函数可以编译并返回一个From
值。
- std::convertible_to
是一个概念,要求类型From
和To
符合上述条件,并且可以使用static_cast<To>
将类型为From
的r-value引用转换。
std::is_convertible
所施加的要求似乎相对简单。相反,std::convertible_to
的r-value引用转换要求对于如此简单的C++20特性示例来说似乎过于具体。作为C++新手,我无法理解两个网页提供的一些术语和补充说明的部分,也无法想象两者之间的确切差异。
以下是一些相关问题:
- 对于不仅受
std::is_convertible
约束而且受奇怪的r-value引用转换要求约束的类型From
和To
,有哪些实际影响?
- 哪些候选类型的From
和To
被r-value引用转换要求拒绝?
- 除了概念的便利性之外,程序员为什么要使用std::is_convertible
或std::convertible_to
中的任何一个来约束其函数返回类型或参数类型?以下是一个更简单的解释或示例。谢谢!
From
是否隐式可转换为类型To
是一个分类错误:在C++中,类型不能转换为类型-尽管库规范中到处都这么说-表达式可以转换为类型。实际上,is_convertible_v<From,To>
和is_convertible<From,To>
都检查这样一个表达式e
是否可转换为类型To
,使得decltype((e))
为From
。 - Caseyadd_rvalue_reference_t<From>
:) 除了 void 之外,我们不关心 prvalue 的废话...(编辑:实际上,我们想要remove_cv_t<add_rvalue_reference_t<From>>
- 已提交 LWG 问题) - T.C.